• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のフォルダから指定するファイルをコピー)

複数のフォルダから指定するファイルをコピー

このQ&Aのポイント
  • 複数のフォルダに格納されているファイルの中から指定した日付を含んだファイルをコピーし、別のフォルダに張り付ける方法を教えてください。
  • VBAを使用して複数のフォルダに格納されているファイルの中から指定した日付を含んだファイルをコピーし、別のフォルダに張り付ける方法を教えてください。
  • 指定した日付を含む複数のフォルダに格納されているファイルをVBAを使ってコピーし、別のフォルダにまとめる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

   こんな感じでイケルかと存じますが、内容をよく吟味してから、実情に応じてコードを書き換えてみてください。 Option Explicit Dim fs, f, msg, copyFrom, c Dim hizuke, hizuke8, hizuke8h, hizuke8p, hizuke6, hizuke6h, hizuke6p, h Const copyTo = "D:\VBS\コピー先\" copyFrom = Array("D:\AB", "D:\CD", "D:\EF") '日付の確定 Do      hizuke = InputBox("日付を入力してください。" & vbCr & vbCr & "例)2000-01-01")      If hizuke = "" Then WScript.Quit      If Len(hizuke) > 5 Then          If Left(hizuke, 2) <> "20" Then hizuke = "20" & hizuke          hizuke = Replace(hizuke, ".", "/")          On Error Resume Next          hizuke = FormatDateTime(hizuke, vbShortDate)          If Err.Number = 0 Then              If Year(hizuke) > 1999 Then                  If MsgBox(FormatDateTime(hizuke, vbLongDate) & "でよろしいか?", vbYesNoCancel) = vbYes Then Exit Do              End If          End If      End If      On Error GoTo 0 Loop '日付文字列の配列 hizuke8 = Replace(hizuke, "/", "") hizuke8h = Replace(hizuke, "/", "-") hizuke8p = Replace(hizuke, "/", ".") hizuke6 = Mid(hizuke8, 3, 6) hizuke6h = Mid(hizuke8h, 3, 8) hizuke6p = Mid(hizuke8p, 3, 8) hizuke = Array(hizuke8, hizuke8h, hizuke8p, hizuke6, hizuke6h, hizuke6p) '該当するファイルのコピー Set fs = CreateObject("Scripting.FileSystemObject") For c = 0 To UBound(copyFrom)      For Each f In fs.GetFolder(copyFrom(c)).Files          For h = 0 To UBound(hizuke)              If InStr(f.Name, hizuke(h)) > 0 Then                  On Error Resume Next                  fs.CopyFile f.Path, copyTo & f.Name, False                  If Err.Number <> 0 Then                      '同名のファイルが存在するときは、フォルダ名を冠して保存                      fs.CopyFile f.Path, copyTo & Replace(Mid(copyFrom(c), 3, 100), "\", "") & "_" & f.Name, False                  End If                  On Error GoTo 0              End If          Next      Next Next MsgBox "終了しました"

viajero365
質問者

お礼

いつもありがとうございます。参考にさせていただきます(*^_^*)

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

で、何が不足なんでしょう? ・copyFrom を Constにしたら、D:\CD" "D:\EF"に着手できない。 ・せっかくFileSystemObject使ってるんだから、CopyFileメソッド使えば上書き可能。 とか?

viajero365
質問者

お礼

出来ました。Array関数に複数のパスを入れ、ループでまわすことで行いたいことができました。 アドバイスありがとうございます。