- ベストアンサー
複数のフォルダから指定するファイルをコピー
- 複数のフォルダに格納されているファイルの中から指定した日付を含んだファイルをコピーし、別のフォルダに張り付ける方法を教えてください。
- VBAを使用して複数のフォルダに格納されているファイルの中から指定した日付を含んだファイルをコピーし、別のフォルダに張り付ける方法を教えてください。
- 指定した日付を含む複数のフォルダに格納されているファイルをVBAを使ってコピーし、別のフォルダにまとめる方法を教えてください。
- みんなの回答 (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 "終了しました"
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
で、何が不足なんでしょう? ・copyFrom を Constにしたら、D:\CD" "D:\EF"に着手できない。 ・せっかくFileSystemObject使ってるんだから、CopyFileメソッド使えば上書き可能。 とか?
お礼
出来ました。Array関数に複数のパスを入れ、ループでまわすことで行いたいことができました。 アドバイスありがとうございます。
お礼
いつもありがとうございます。参考にさせていただきます(*^_^*)