【VBA】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を加えてナンバリングしておきました。

実行後の画面

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

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

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をコピーしました