[[20120621105841]] 『ファイル読み込みのエラー』(コヨーテひな) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル読み込みのエラー』(コヨーテひな)
  Set ファイルシステム = CreateObject("Scripting.FileSystemObject")
  あるブック = Application.GetOpenFilename("Excelファイル(*.xls),*.xls")
  Set 親フォルダー = ファイルシステム.GetFile(あるブック).ParentFolder

  For Each ファイル In 親フォルダー.Files
    Workbooks.Open ファイル.Path
    ブック名 = ActiveWorkbook.Name
      ・
      ・
      処理
      ・
      ・
 Next
 上記のように、フォルダにあるファイルを全て読み込んで処理していますが、
 ファイルが無くなっても、読み込みに行って、Workbooks.Openのステップで
 ("1004"クエリが実行できないか、または、データベーステーブルを開けませんでした。)
 というエラーで止まってしまいます。
 ファイルが無くなったら、そのまま終了するには、どうしたらいいのでしょうか。
 上記のマクロは、他に人に作成してもらったマクロです。
Excel2007,Windows 7


 ファイルがなくてもといった事がどういう意味なのか解りませんが
 これで、確認してみてください。
 BJ

 あるブック = Application.GetOpenFilename("Excelファイル(*.xls),*.xls")
 Set 親フォルダー = CreateObject("Scripting.FileSystemObject").GetFile(あるブック).ParentFolder

 MsgBox 親フォルダー

  For Each ファイル In 親フォルダー.Files

    MsgBox ファイル

    'Workbooks.Open ファイル.Path
    'ブック名 = ActiveWorkbook.Name
  Next

実行してみました。フォルダの中にあるファイルを順番に読み込んでいるのがわかります。
最後のファイルを読み込んで次に現れたのが、(Thumbs.db)というファイルですた。
しかし、このファイルは実際は存在しません。これでエラーになっているようです。

先ほどは書きませんでしたが、フォルダの中のファイルを4個にすると処理は正常に終了します。
実際のファイルは78個あります。この場合エラーになってしまいます。


 >このファイルは実際は存在しません。

 にわかに信じがたいですが、応急措置として
 ファイル数の確認とエクセルファイルだけ開くようにしてみたらどうなりますか?

 Sub test()
     Set ファイルシステム = CreateObject("Scripting.FileSystemObject")
     あるブック = Application.GetOpenFilename("Excelファイル(*.xls),*.xls")
     Set 親フォルダー = ファイルシステム.GetFile(あるブック).ParentFolder

     MsgBox "ファイル数" & 親フォルダー.Files.Count

     For Each ファイル In 親フォルダー.Files

         If ファイル.Type Like "Microsoft Excel*ワークシート" Then
             Workbooks.Open ファイル.Path
             ブック名 = ActiveWorkbook.Name
              ActiveWorkbook.Close
             '      ・
             '      ・
             '            処理
             '      ・
             '      ・
         End If
     Next

 End Sub

 (半平太) 2012/06/21 14:50

確認しました。
ファイル数は、79個でした。やはり1個多いです。実際のフォルダの中にはありません。
ファイルの種類は、(Microsoft Office Excel 97-2003 ワークシート)でしたので、
このファイル名でIF文を作成して実行してみましたら、正常終了いたしました。

どうもありがとうございました。

IF文にファイルの種類を指定するところが、少々気になりますが、今のところは問題ありません。


 >ファイル数は、79個でした。やはり1個多いです。実際のフォルダの中にはありません。 

 それだけ状況証拠がそろっていれば、ファイルは79個だと思いますよー。

 Thumbs.dbが隠しファイルになっているのではないですか?

 <ご参考>
 画像の入ったフォルダにある「Thumbs.db」って何ですか?
http://trendy.nikkeibp.co.jp/article/qa/20060208/115301/

 それが有害無益のファイルなら削除してしまったらどうでしょうか?、
 そうすればエクセルファイルかどうかチェックをするIF文も必要なくなります。

 (半平太) 2012/06/21 16:19

やはり、ファイルは78個で、 Thumbs.dbが隠しファイルになっているようです。
見た目はないですが、MsgBoxでは確認できました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.