AccessからExcelを読んで最終行・最終列を取得する

Excelプロセスが残る、、

013

プロシージャが完了してもExcelプロセスが解放されずはまってしまったのでメモ。解決までかなり回り道をしてしまった。Accessの再インストールを考えたほどだが、単にコード記載ミスでした。

使用環境

OS Windows7Pro64bit
Office Office2010 32bit

参照設定

 

 

 

 

 

 

 

プロシージャ

'**********************************************************
'*    Excelファイルの最終列最終行を取得
'**********************************************************
Public Function Func1341Nouki() As Boolean
On Error GoTo Err_Func1341Nouki

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim lngMaxRow As Long
Dim lngMaxCol As Long


    'Excel
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("D:\****.XLS")
    Set xlSheet = xlBook.Worksheets("Sheet1")

    '列数チェック
    lngMaxCol = xlSheet.Cells(1, xlSheet.Columns.Count).End(xlToLeft).Column

    '最終行数の変数化
    lngMaxRow = xlSheet.Cells(xlSheet.Rows.Count, 1).End(xlUp).Row

    'Excel終了処理

    xlBook.Close True
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing

    Func1341Nouki = True
    MsgBox "inp"
Exit Function

Err_Func1341Nouki:
    Func1341Nouki = False
End Function

間違えていた箇所

ColumnsのまえのxlSheet.が抜けていた。変数にセットされるのですっかり見落としていた

'列数チェック
lngMaxCol = xlSheet.Cells(1, xlSheet.Columns.Count).End(xlToLeft).Column

'最終行数の変数化
lngMaxRow = xlSheet.Cells(xlSheet.Rows.Count, 1).End(xlUp).Row

'列数チェック
lngMaxCol = xlSheet.Cells(1, Columns.Count).End(xlToLeft).Column

'最終行数の変数化
lngMaxRow = xlSheet.Cells(Rows.Count, 1).End(xlUp).Row

今後のチェック方法

マウスのポインタをあててクラスが出ていることを確認する。今回の間違えはメンバーだけを記載している。
010011

F2で検索するとライブラリ→クラス→メンバーの繋がりが分かる
012

コメント