【VBA】特定のフォルダ内の全ファイルをバックグラウンドで別ブックとして保存する方法
手作業で大量のファイルを個別に保存するのは時間と労力がかかります。この記事では、特定のフォルダ内の全ワークシートを自動的にバックグラウンドで別のワークブックとして保存するVBAマクロを作成します。
サンプルコード
VBA
Option Explicit
Sub SaveSheetsAsSeparateBooks()
Dim wb As Workbook, ws As Worksheet
Dim folderPath As String, fileName As String, filePath As String
Dim fso As Object, folder As Object, file As Object
' フォルダパスを指定
folderPath = "C:\Users\User\Documents\ExampleFolder"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
Application.ScreenUpdating = False
For Each file In folder.Files
If Right(file.Name, 4) = ".xls" Or Right(file.Name, 5) = ".xlsx" Then
' ファイルを開く
Set wb = Workbooks.Open(file.Path)
' 各シートを別ブックとして保存
For Each ws In wb.Sheets
fileName = folderPath & "\" & ws.Name & Right(file.Name, Len(file.Name) - 4) + ".xlsx"
ws.Copy
With ActiveWorkbook
.SaveAs fileName:=fileName
.Close SaveChanges:=False
End With
Next ws
wb.Close SaveChanges:=False ' 元のファイルを閉じる
End If
Next file
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。また、ファイル形式がサポートされているかどうか確認してください。