• 締切済み

ExcelVBAでセルに入力された値をみて複数のファイルコピーするマクロ

VBA初心者です。関連する質問はみたのですが、組み合わせが他と違い うまくできませんでした。 EXCELのマクロを使って、それぞれ格納場所が異なる2つのエクセルファイル(格納元D:\AAA\123A.xlsと格納元D:\BBB\123B.xls)をコピーして指定のフォルダ(格納先D:\ZZZ\)内へ2つファイルを保存したいのですが・・ Private Const cnsSrc = "D:\AAA\123A.xls" Private Const cnsDst = "D:\ZZZ\123A.xls" Sub COPY_Func() ' ファイルをコピー FileCopy cnsSrc, cnsDst End Sub まで考えたんですが 複数のファイルまでコピーさせることができませんでした。 また、それぞれのフォルダ内には○○○A.xlsと○○○B.xlsが複数あるため コピーするファイル名は選択させたく、sheet1のA1セルに入力された"123"を みて123A.xls123B.xlsをコピーさせたいのですが、可能でしょうか? 宜しくお願い致します。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VBAからなんだが、FSOを使うのがよかろう。 Sub test01() Const cnsSOUR1 = "C:\Documents and Settings\XXX\My Documents\01化B.xls" ' 元ファイル Const cnsSOUR2 = "C:\Documents and Settings\XXX\デスクトップ\新しいフォルダ\関数.xls" Const cnsDEST = "C:\Documents and Settings\XXX\デスクトップ\" ' 先フォルダ(右端\必須) '--- Dim objFSO As Object ' FSO Set objFSO = CreateObject("Scripting.FileSystemObject") ' FSOによるファイルコピー objFSO.CopyFile cnsSOUR1, cnsDEST, True objFSO.CopyFile cnsSOUR2, cnsDEST, True Set objFSO = Nothing End Sub これでデスクトップへ別のフォルダからコピーしたので、質問の場合も定数cnsSOUR1, cnsSOUR2, cnsDEST を適当に変えると、出来るだろう ーー >。関連する質問はみたのですが Googleででも「ファイルのコピー VBA」で照会すれば、沢山のコード例が出るよ。 >組み合わせが他と違いうまくできませんでした。 少しぐらい修正出来る力がないと、質問しても無駄。

hdk1979
質問者

お礼

内容にも書かせて頂きましたがVBA初心者です。 修正できる力がなくて質問させて頂きました。 無駄かも知れませんが、仕事の都合上やらなければいけませんので 力を借りたく投稿させていただきました。 回答頂いた内容を自分のマクロに置き換えていろいろやってみましたが なかなかうまくいきませんでした。 完成できたらご報告したいと思います。 ありがとうございました。

回答No.1

こんな感じですかね。 Option Explicit ' ファイルパスのパターン Private Const cnsSrcA = "D:\AAA\%num%A.xls" Private Const cnsSrcB = "D:\BBB\%num%B.xls" Private Const cnsDstA = "D:\ZZZ\%num%A.xls" Private Const cnsDstB = "D:\ZZZ\%num%B.xls" Sub COPY_Func() Dim strSrcA As String, strSrcB As String Dim strDstA As String, strDstB As String Dim strNum As String strNum = Sheets(1).Range("A1").Value ' パターンの番号部分を置き換える strSrcA = Replace(cnsSrcA, "%num%", strNum) strSrcB = Replace(cnsSrcB, "%num%", strNum) strDstA = Replace(cnsDstA, "%num%", strNum) strDstB = Replace(cnsDstB, "%num%", strNum) ' ファイルをコピー FileCopy strSrcA, strDstA FileCopy strSrcB, strDstB End Sub 方法はいろいろありますが、フォルダやファイル名のパターンがある程度固定ならこういう方法がわかりやすいと思います。 文字列変数を & で連結させる方法もあります。 Dim X, Y Y = "B" X = "A" & Y & "C" これで X には文字列"ABC"が代入されます。あとはうまく組み合わせてください。

hdk1979
質問者

お礼

すごく分かりやすいですね。 うまくできました。 これならあとで編集するのも簡単にできそうですね。 助かりました。ありがとうございました。

関連するQ&A