xls ファイルを xlsx 形式に自動で変換・保存するマクロ

このブックがあるディレクトリの xls ファイルを xlsx 形式で保存するマクロ。

以下のコードをコピペしてマクロブックを作り、xls ファイルがたくさんあるフォルダに配置する。

Sub ConvertToXlsx()
  Application.DisplayAlerts  = False  ' 警告表示しない
  Application.ScreenUpdating = False  ' 画面描画しない
  
  ' 変換元フォルダ : このブックがあるフォルダ
  Dim inPath As String
  inPath = ActiveWorkbook.Path
  
  ' 変換後フォルダ : このブック配下に Converted フォルダを作る
  Dim outPath As String
  outPath = ActiveWorkbook.Path & "\Converted"
  
  If Dir(outPath, vbDirectory) = "" Then
    MkDir outPath
  End If
  
  ' 「.xls」を含むファイルを取得する。このままだと「.xlsx」や「.xlsm」も引っかかるのでループ内で除外する
  Dim files As String
  files = Dir(inPath & "\*.xls")
  
  Do While file <> ""
    ' 「.xls」かどうか判定
    If LCase(file) Like "*.xls" Then
      Workbooks.Open Filename:=inPath & "\" & file
      ActiveWorkbook.SaveAs Filename:=outPath & "\" & file & "x", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
      ActiveWorkbook.Close
    End If
    file = Dir()
  Loop
  
  Application.ScreenUpdating = True
  Application.DisplayAlerts  = True
  MsgBox "完了"
End Sub

マクロを実行すると、「Converted」フォルダを生成し、その中に xls 形式のファイルたちを xlsx 形式に保存し直して格納していく。

xlsx 形式で保存すると、従来の xls 形式と比べてファイルサイズが 1/3 〜 1/2 くらいに減少するので、一括で保存し直すために作ったマクロだった。

本当は、マクロ入りブックだったら xlsm 形式で保存するとか、もう少し処理を加えないといけないし、まず対象フォルダの決め方がダサいのだが、もう更新するつもりもないし、過去の遺産としてこのまんま公開。