@frswataru (本石 渉)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBA 実行エラー1004 Excel データーリンクプロパティ

Q&A

Closed

解決したいこと

VBAでフィルを任意のフォルダーを開こうとしたらエラーがでました
データーリンクプロパティのWindowもでます
解決方法を教えて下さい。

発生している問題・エラー

実行エラー1004

プロパティデーターリンク.jpg
実行時エラー1004.jpg

該当するソースコード

Sub OpenFilesInFolder()
    Dim dstSheet As Worksheet
    Set dstSheet = ThisWorkbook.Worksheets("私服")
    Dim path, fso, file, files
    'path = "C:/Users/xxxxxx/フォルダ名/"
    path = ThisWorkbook.path & "/Data/"  '相対パスの場合
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set files = fso.GetFolder(path).files

    'フォルダ内の全ファイルについて処理
    For Each file In files

        'ファイルを開いてブックとして取得
        Dim wb As Workbook
        Set wb = Workbooks.Open(file)
        'ブックに対する処理1
        Call SheetLoop
        '保存せずに閉じる
        Call wb.Close(SaveChanges:=False)

    Next file
MsgBox "I did it!!!"
End Sub

0 likes

2Answer

@uasi さん
コメントです。
FileオブジェクトのデフォルトプロパティはPathであるため
Workbooks.Open(file)でもファイルを開くことができます。

2Like

変数 file には File オブジェクトが入っています。 Workbooks.Open() はパス文字列を受け取るので file を直接渡すことはできません。 Workbooks.Open(file.Path) とすれば動くと思います。

0Like

Comments

  1. @frswataru

    Questioner

    早速試してみました
    状況変わらずです
  2. path = "C:/Users/xxxxxx/フォルダ名/" のように絶対パスで指定したときは意図通り動いていましたか?
  3. Excel ファイルではないファイルを開こうとしている可能性もあります。特に隠しファイル Thumbs.db がフォルダに存在するかもしれません。 For Each file In files の次の行に MsgBox file.Path と書いて、開こうとしているファイルの名前を確認してみてください。
  4. @frswataru

    Questioner

    Thumbs.dbがあります
  5. ファイル名をチェックして Thumbs.db は処理しないようにしてください。

    For Each file In files
    If file.Name <> "Thumbs.db" Then
    '(ここに処理を書く)
    End If
    Next file
  6. @frswataru

    Questioner

    明日試してみます
  7. @frswataru

    Questioner

    暫定措置としてバックアップデータでファイルを復元し作動が復活しまた。
    何かの原因でファイルが破損してしまったかもしれません。
    いろいろと相談にのって頂きありがとうございました。

Your answer might help someone💌