前提・実現したいこと
ここに質問の内容を詳しく書いてください。
エクセル2010にてマクロ走行中に実行時エラー1004
アプリケーション定義またはオブジェクト定義のエラーが出力される。
フォルダパスを指定した後、再帰的にフォルダの中身を(サブディレクトリを含む)を参照し
拡張子.log ファイルをエクセルの6行目、D列に書き込ませています。
階層の浅いファイルでは等エラーは発生しませんが
階層が深く、ファイル数が多いと当、現象が発生します
発生している問題・エラーメッセージ
実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。
該当のソースコード
Dim 行 As Long
Dim cnt As Long
Dim c行 As Long
Dim d行 As Long
Dim h行 As Long
Dim i行 As Long
Sub open_dir_and_run()
Dim Folder As Object
Dim strPath As String
Set Folder = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選択してください", 0, 0) If Not Folder Is Nothing Then strPath = Folder.Items.Item.Path Else Exit Sub End If cnt = 5 c行 = 5 d行 = 5 h行 = 5 i行 = 5 Call re_call(strPath)
End Sub
Sub re_call(ByVal strPath)
Dim buf As String Dim textbuf As String Dim text_cnt As Long buf = Dir(strPath & "*.log") 'ターゲットのファイル名 tgt_file = strPath & "\" & buf Do While buf <> "" Open tgt_file For Input As #1 Do Until EOF(1) Line Input #1, textbuf cnt = cnt + 1 Cells(cnt, 4) = textbuf <--- ここでエラー Loop Close #1 buf = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(strPath).SubFolders Call re_call(f.Path) Next f End With
End Sub
VBA エクセル
試したこと
グローバル変数 cnt が694になったときにエラーが出力されます
ウォッチで
Cells(cnt, 4)を監視していると
落ちたときに、中身が
: FormulaLabel : <アプリケーション定義またはオブジェクト定義のエラーです。> : XlFormulaLabel : Module1.re_call
: Name : <アプリケーション定義またはオブジェクト定義のエラーです。> : Variant : Module1.re_call : PivotCell : <アプリケーション定義またはオブジェクト定義のエラーです。> : PivotCell : Module1.re_call : QueryTable : <アプリケーション定義またはオブジェクト定義のエラーです。> : QueryTable : Module1.re_call : ServerActions : <アプリケーション定義またはオブジェクト定義のエラーです。> : Actions : Module1.re_call
が、見えています
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/13 02:22
2019/01/13 02:45 編集
2019/01/13 03:03
2019/01/13 03:10
2019/01/13 03:14