【VBA】特定のフォルダ内の全ファイルを配列を使って高速に別ブックとして保存する方法
日々の業務の中で、大量のデータファイルを個々のブックに分割して保存することがあります。この作業は非常に時間がかかりますが、VBAを使用することで高速化が可能です。本記事では、特定のフォルダ内のすべてのワークシートを配列を使って高速に別のブックとして保存する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub SaveSheetsAsSeparateBooks()
Dim wb As Workbook, ws As Worksheet
Dim filePath As String, fileSpec As String, fileName As String
Dim folderPath As String, arrFiles() As Variant
Dim i As Long
' フォルダパスを指定
folderPath = "C:\Users\Username\Documents\SampleFolder"
' フォルダ内のすべてのExcelファイルを配列に格納
fileSpec = Dir(folderPath & "*.xlsx")
i = 0
Do While fileSpec <> ""
ReDim Preserve arrFiles(1 To i + 1)
arrFiles(i + 1) = folderPath & fileSpec
fileSpec = Dir()
i = i + 1
Loop
' フォルダ内のすべてのファイルを処理
For Each fileName In arrFiles
Set wb = Workbooks.Open(fileName)
Application.ScreenUpdating = False
For Each ws In wb.Sheets
ws.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".xlsx"
ActiveWorkbook.Close SaveChanges:=True
Next ws
wb.Close SaveChanges:=False
Next fileName
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。また、ファイルパスや拡張子の指定が正確であるかもチェックしてください。