📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルを高速に別ブックとして保存する方法

日々大量のデータ処理を行う実務担当者にとって、特定のフォルダ内の全エクセルファイルを個々に開いて保存するのは非常に労力がかかります。この記事では、VBAを使用して指定したフォルダ内のすべてのエクセルファイルを高速に別ブックとして保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveFilesAsSeparateBooks()
    Dim fso As Object, folder As Object, file As Object
    Dim wb As Workbook, ws As Worksheet
    Dim filePath As String, fileName As String
    
    '指定フォルダ内のすべてのファイルを取得
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\指定したフォルダパス")
    
    Application.ScreenUpdating = False
    For Each file In folder.Files
        If Right(file.Name, 4) = ".xls" Or Right(file.Name, 5) = ".xlsx" Then
            filePath = file.Path
            fileName = fso.GetBaseName(filePath)
            Set wb = Workbooks.Open(filePath)
            wb.SaveAs ThisWorkbook.Path & "\" & fileName & ".xlsm"
            wb.Close False
        End If
    Next file
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。