電子書籍の厳選無料作品が豊富!

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をコピーさせたいのですが、可能でしょうか?

宜しくお願い致します。

A 回答 (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」で照会すれば、沢山のコード例が出るよ。
>組み合わせが他と違いうまくできませんでした。
少しぐらい修正出来る力がないと、質問しても無駄。
    • good
    • 0
この回答へのお礼

内容にも書かせて頂きましたがVBA初心者です。
修正できる力がなくて質問させて頂きました。
無駄かも知れませんが、仕事の都合上やらなければいけませんので
力を借りたく投稿させていただきました。

回答頂いた内容を自分のマクロに置き換えていろいろやってみましたが
なかなかうまくいきませんでした。
完成できたらご報告したいと思います。
ありがとうございました。

お礼日時:2009/12/03 22:53

こんな感じですかね。



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"が代入されます。あとはうまく組み合わせてください。
    • good
    • 0
この回答へのお礼

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

助かりました。ありがとうございました。

お礼日時:2009/12/03 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!