• 締切済み

Visual Basic Editorの実行時エラーのことについて教えてください。 

Visual Basic超初心者ですがよろしくお願いします。 標準モジュールで入力したものを実行すると、必ず「実行時エラー "53": ファイルが見つかりません。」と表示してしまいます。 入力したものはミスはないと思うのですが、何回やってもエラーが出てしまいます。 わかる方いましたら教えてください。 入力したものを一応載せときます↓ Sub list_file() Dim numfile As Long Dim i As Long With Application.FileSearch .NewSearch .LookIn = Range("b1").Value .Filename = Range("b2").Value .SearchSubFolders = Range("b3").Value If .Execute() > 0 Then file_count = .FoundFiles.Count MsgBox file_count & "files exis" Worksheets.Add after:=Worksheets("sheet1") Range("a1").Value = "filename" Range("b1").Value = "date" Range("c1").Value = "size" For i = 1 To file_count Cells(i + 1, 1).Value = .FoundFiles(i) Cells(i + 1, 2).Value = FileDateTime(.FoundFiles(i)) Cells(i + 1, 3).Value = FileLen(.FoundFiles(i)) Cells(i + 1, 2).Value = Hex(Cells(i + 1, 3).Value) Next Columns("a:c").AutoFit Else MsgBox "no file exists" End If End With End Sub

みんなの回答

回答No.2

Cells(i + 1, 2).Value = FileDateTime(.FoundFiles(i))でエラーになると言うことは、.Execute()の時点ではあるけど、Cells(i + 1, 2).Value = FileDateTime(.FoundFiles(i))の時には無いと言う事でしょうから、以下のようにしてはどうでしょう。 または、on error で飛ばす方法もあります。 Sub list_file() Dim numfile As Long Dim i As Long Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") With Application.FileSearch .NewSearch Sheets("sheet1").Select .LookIn = Range("b1").Value .Filename = Range("b2").Value .SearchSubFolders = Range("b3").Value If .Execute() > 0 Then file_count = .FoundFiles.Count MsgBox file_count & "files exis" Worksheets.Add after:=Worksheets("sheet1") Range("a1").Value = "filename" Range("b1").Value = "date" Range("c1").Value = "size" For i = 1 To file_count Cells(i + 1, 1).Value = .FoundFiles(i) If fso.FileExists(.FoundFiles(i)) = True Then Cells(i + 1, 2).Value = FileDateTime(.FoundFiles(i)) Cells(i + 1, 3).Value = FileLen(.FoundFiles(i)) Cells(i + 1, 4).Value = Hex(Cells(i + 1, 3).Value) Else Cells(i + 1, 5).Value = "削除されています" End If Next Columns("a:c").AutoFit Else MsgBox "no file exists" End If End With Set fso = Nothing End Sub p.s. office2007ではFileSearchが無くなっているらしいです。 http://support.microsoft.com/kb/935402/ja これからは、Dir 関数または FileSystemObjectを使った方がいいかもしれません。

すると、全ての回答が全文表示されます。
回答No.1

検索条件を取得するsheetが不安定なんじゃないでしょうか? 検索条件がsheet1にある場合なら、最初にcellの値を取得する.LookIn = Range("b1").Valueの前に Sheets("sheet1").Select を入れてみてください。 複数のsheetや標準モジュールからcellを扱う場合は、現在のシートがどこだか指定する必要があります。 後半部もWorksheets.Addの後に書き込んでるから指定無しで動いてますが、途中で他のsheetの作業をしたりすると思わぬ不具合がおこったりしますよ。

ashishi
質問者

補足

回答ありがとうございます。 LookIn = Range("b1").Valueの前にSheets("sheet1").Selectを入れてみたんですが、やっぱり実行時エラーになってしまいます。 同じ課題をやっている友達は一発で実行できたんですが、僕のパソコンでは、友達と同じやり方でやっているのにもかかわらずできません。 補足で、エラーでいつも黄色く表示される場所はCells(i + 1, 2).Value = FileDateTime(.FoundFiles(i))です。 excelではsheet1に、b1にc:\ b2に*.txt b3に入力規則の設定で、入力値の種類リスト、元の値TRUE,FALSE を設定して、ボタン表示のTRUEを選んで実行してます。 なにかわかりましたらお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A