マクロでフォルダを作成し、その中にテンプレートファイルをコピーすることができます。
同じフォーマットのファイルを大量に用意したい場合に便利です。
新規フォルダ作成
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”として保存しました。
こんな感じでファイルが作成されていますね。
新規フォルダ内に新規ファイルを作成する方法
フォルダ作成とファイル作成の組み合わせ
これまでに紹介したコードを組み合わせましょう。
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”としてコピーします。
ファイルを大量にコピーする
ファイルコピーも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個のファイルがコピーされます。
日報や議事録など、フォーマットが決まっているファイルを一気にコピーできますね!!
まとめ
今回はフォルダの作成からファイル作成とコピーを自動化する方法を解説しました。
このプログラムを元にご自身の仕事に合わせてカスタマイズしてみてくださいね。
コメント