質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

6609閲覧

VBA オートメーションエラーについて

rokku

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/21 06:37

編集2021/12/21 06:42

vba

1Sub test_Click() 2 3 Dim Wb As Workbook 4 Dim Ws As Worksheet 5 Dim FilePath As String 6 Dim SheetNo As Integer 7 Dim lastRow As long 8 9 'シートの設定 10 FilePath = "C:\Users\a\Desktop\テスト.xlsx" 11 SheetNo = 1 12 13 'ワークブックを開く 14 Set Wb = Workbooks.Open(FilePath) 15 16 'シートを取得 17 Set Ws = Wb.Worksheets(SheetNo) 18 19 'ワークブックを閉じる 20 Wb.Close 21 22 '最終行取得 23 lastRow = GetLastRow(Ws.Cells) 24 25 'メモリ解放 26 Set Wb = Nothing 27 Set Ws = Nothing 28 29End Sub 30 31Public Function GetLastRow(TargetRange As Range) As Long 32 GetLastRow = TargetRange.Find("*", searchOrder:=xlByRows, searchdirection:=xlPrevious).Row 33 Exit Function 34End Function

前提・実現したいこと

ワークシートの最終行を取得する関数を作成しています。
ワークブックを閉じた後に、自作関数のGetLastRowを呼び出すと、以下のエラーが出てしまいます。

発生している問題・エラーメッセージ

実行時エラー'-2147221080(800401a8) オートメーションエラーです。

該当のソースコード

vba

1  '最終行取得 2 lastRow = GetLastRow(Ws.Cells)

試したこと

最終行取得後にcloseメソッドを記載した結果、エラーなく処理が動きました。
Wb.CloseをするとWsに格納していた情報が消えてしまうことが原因だとは思うのですが、
はっきりと分からないため、ご教授頂ければ幸いです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GetLastRow に Ws.Cells を渡していますが、
Ws は Wb の Worksheet なのですから、
Wb を Close するのは、当然 GetLastRow の呼び出しの後でなければなりません。

お気づきの通りです。

VBA

1 'ワークブックを開く 2 Set Wb = Workbooks.Open(FilePath) 3 4 'シートを取得 5 Set Ws = Wb.Worksheets(SheetNo) 6 7 '最終行取得 8 lastRow = GetLastRow(Ws.Cells) 9 10 'ワークブックを閉じる 11 Wb.Close

投稿2021/12/21 12:55

ak.n

総合スコア291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問