スポンサーリンク

Excelマクロでフォルダ作成とファイルコピーをする方法

VBA

マクロでフォルダを作成し、その中にテンプレートファイルをコピーすることができます。

フォルダを作成してファイルコピーした後の図

同じフォーマットのファイルを大量に用意したい場合に便利です。

新規フォルダ作成

Sub test()

MkDir ("C:\Users\HTOM\Desktop\NewFolder")

End Sub

MkDirでフォルダを作成します。

フォルダを作成した後の図

()の中にはフォルダのパス(保存先)を入れます。

フォルダのパスの例

フォルダの作成先(保存先)を指定して、作成したいフォルダ名を加えたらOKです。
ユーザー名は人によって違うので注意しましょう。

作成したい場所のパスってどうやって調べるの?

エクスプローラーのアドレスバーをクリックすると、その場所のパスをコピーできます。

アドレスバーからファイルのパスをコピーする図

また、以下のように作成先とフォルダ名を分けて定義するとなお良しです。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
FolderName = "NewFolder"
MkDir (folderPath & "\" & FolderName)

End Sub
フォルダのパスをコピペする図

folderPathにコピーしたパスを貼り付けます。
FolderNameに作成したいフォルダの名前を入れればOKです。

新規ファイル作成

Add:作成する

Sub test()

Workbooks.Add

End Sub

ファイルを作成するにはWorkbooks.Addを使います。
新規ファイルを作成すると”Book1″というファイルが出てくるはずです。

Close:閉じる

Sub test()

Workbooks.Add
Cells(1, 1) = "NewFile"
ActiveWorkbook.Close savechanges:=True, Filename:="C:\Users\HTOM\Desktop\NewFile.xlsx"

End Sub

新規ファイルを簡単に編集して保存します。
Closeでファイルを閉じましょう。

savechangesは変更保存の有無を確認する引数です。Trueにすると変更を保存します。
Filenameは保存先のパスです。

今回はデスクトップに”NewFile.xlsx”として保存しました。

ファイルをコピーした後の図

こんな感じでファイルが作成されていますね。
>>Excelマクロでファイルを保存する方法

新規フォルダ内に新規ファイルを作成する方法

フォルダ作成とファイル作成の組み合わせ

これまでに紹介したコードを組み合わせましょう。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
FolderName = "NewFolder"
MkDir (folderPath & "\" & FolderName)

Workbooks.Add
Cells(1, 1) = "NewFile"
ActiveWorkbook.Close savechanges:=True, Filename:=folderPath & "\" & FolderName & "\NewFile.xlsx"

End Sub

デスクトップに”NewFolder”を作成し、その中に”NewFile.xlsx”を保存しています。

大量の新規ファイルを新規フォルダに作成

for文で新規ファイルを複数作りましょう。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
FolderName = "NewFolder"
MkDir (folderPath & "\" & FolderName)

For i = 1 To 10
    Workbooks.Add
    Cells(1, 1) = "NewFile"
    saveName = "NewFile"
    saveName = saveName & "_" & i & ".xlsx"
    ActiveWorkbook.Close savechanges:=True, Filename:=folderPath & "\" & FolderName & "\" & saveName
Next i

End Sub

変数iを1から10まで増やしながらファイルを作成しています。
saveNameがファイル名です。

フォルダのパスをコピペするコードの例

ファイル名はsaveNameにアンダーバーと変数iを加えてナンバリングしておきました。

ファイルを10個コピーした図

新規フォルダにファイルをコピーする方法

フォルダ内にファイルをコピーする

FileCopyでファイルをコピーできます。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
FolderName = "NewFolder"
MkDir (folderPath & "\" & FolderName)

FileCopy "C:\Users\HTOM\Desktop\template.xlsx", folderPath & "\" & FolderName & "\copy.xlsx"

End Sub

デスクトップにある”template.xlsx”ファイルを、新規フォルダにコピーしました。

フォルダを作成してファイルコピーした後の図

コピーしたいファイルのパスとコピー先のパスを渡しましょう。
“NewFolder”を作成してから”template.xlsx”を”copy.xlsx”としてコピーします。
>>Excelマクロでファイルをコピーする方法

ファイルを大量にコピーする

ファイルコピーもfor文を使って大量に繰り返すことができます。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
FolderName = "NewFolder"
MkDir (folderPath & "\" & FolderName)

For i = 1 To 10
    copyName = "copy"
    copyName = copyName & "_" & i & ".xlsx"
    FileCopy "C:\Users\HTOM\Desktop\template.xlsx", folderPath & "\" & FolderName & "\" & copyName
Next i

End Sub

実行すると、作成したフォルダに10個のファイルがコピーされます。

複数のファイルをコピーする図

日報や議事録など、フォーマットが決まっているファイルを一気にコピーできますね!!

まとめ

今回はフォルダの作成からファイル作成とコピーを自動化する方法を解説しました。
このプログラムを元にご自身の仕事に合わせてカスタマイズしてみてくださいね。

コメント

タイトルとURLをコピーしました