« ワークブックを新規作成、名前をつけて保存、閉じる | トップページ | ワークブックをアクティブにする »

2020年3月24日 (火)

既存xls形式ブックをxlsx、xlsm形式で保存し直す

Excel2003までの保存形式はxls形式でした。
Excel2007以降はマクロが使えるブックはxlsm形式、
マクロが使えないブックはxlsx形式になりました。

xls形式のブックとは言い換えると
拡張子が.xlsのブックのことです。
同じくxlsx形式の拡張子は.xlsx、
xlsm形式の拡張子は.xlsmです。

xlsx、xlsm形式で保存すると
使用できる行数、列数が
65,536 行、256 列から1,048,576 行、16,384 列に増加するなど
既存のxls形式ブックをxlsx、xlsm形式で保存し直すメリットがあります。

VBAで既存xls形式ブックをxlsx形式で保存し直していきます。

下記のコードでは
既存xls形式ブックを開いて、
保存形式をxlsxに変更して名前を付けて保存します。

変数wb_path1は既存xls形式ブックが保存されているフォルダ場所、
変数wb_name1は既存ブックの拡張子xlsを含むブック名、
変数wb_path2は再保存するブックを保存するフォルダ場所、
変数wb_name2はwb_name1の拡張子を除いたブック名です。

名前を付けて保存はSaveASメソッドを使用します。
xlsx形式で保存する際にアラートが出るので

Application.DisplayAlerts = False

でアラートを無効にしています。

また、xls形式ブックにマクロがあった場合は
xlsx形式ブックにマクロは保存されません。

コードはこちら

既存xls形式ブックをxlsx形式で保存し直すコード:

Sub macro200323a()
'既存xls形式ファイルをxlsx形式で保存し直す

    Dim wb As Workbook
    Dim wb_path1 As String, wb_path2 As String
    Dim wb_name1 As String, wb_name2 As String
    wb_path1 = "C:\Users\●●●\元ブック"
    wb_name1 = "Book1.xls"

    wb_path2 = "C:\Users\●●●\再保存ブック"
    wb_name2 = Left(wb_name1, InStr(wb_name1, ".") - 1)

    Set wb = Workbooks.Open(wb_path1 & "\" & wb_name1)

    Application.DisplayAlerts = False
    wb.SaveAs Filename:=wb_path2 & "\" & wb_name2, _
        FileFormat:=xlWorkbookDefault
    Application.DisplayAlerts = True

    wb.Close

End Sub

実行結果は
保存先に指定したフォルダに
xlsx形式のブックが保存されているか確認してください。

xlsm形式で保存したい場合は、
上のマクロのFileFormat引数のxlWorkbookNormal部分を
xlOpenXMLWorkbookMacroEnabledに変更してください。

|

« ワークブックを新規作成、名前をつけて保存、閉じる | トップページ | ワークブックをアクティブにする »

コメント

この記事へのコメントは終了しました。