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

VBA
スポンサーリンク

VBAならフォルダ作成からファイルコピーまで一瞬で終わります。

テンプレートフォルダを量産するのに便利ですよ。

・フォルダを自動作成したい

・テンプレートフォルダ(ファイル)を量産したい

・フォルダ名を日付とかでバージョン管理したい

こんな悩みを解決する内容です。

ファイルをコピーするだけが目的なら、以下の記事の方が詳しいです。

今回は、フォルダ作成から自動化してみましょう!!

新規フォルダ作成

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

Sub test()

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

End Sub
フォルダ作成後の画面

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

パスとは、フォルダを保存するアドレスのことです。

パスの解説図

ユーザー名は人によって違うので注意してくださいね。

フォルダの作成先(保存先)を指定して、作成したいフォルダ名を加えたら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マクロでファイルを保存する方法で解説しています。

この保存先を新規フォルダにすればOKですね!!

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

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

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

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個のファイルがコピーされます。

コードの解説図

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

まとめ:フォルダ作成を自動化しよう

今回はフォルダの作成からファイル作成とコピーを自動化する方法を解説しました。

このプログラムを元にご自身の仕事に合わせてカスタマイズしてみてくださいね。

VBA
スポンサーリンク
HTOMblog

コメント

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