今回はマクロVBAのエラー対応について説明します。
VBAで名前を付けて保存する際に拡張子も入力して保存したとします。
しかし、通常のエクセルの拡張子である「xlsx」の要領で「xlsm」の拡張子で保存すると
エラーが発生してしまいます。
そこで今回は「.xlsm」の拡張子でエラーが発生しない方法で保存する方法について紹介します。
それでは見ていきましょう。
■「.xlsm」の拡張子とは
まずは「.xlsm」の拡張子について紹介します。
拡張子とはファイル名の後の「.」の後に続く文字のことを言います。
VBAを使用する方はすでにご存知かと思いますがマクロの設定や
保存する際には通常の拡張子である「.xlsx」でなく「.xlsm」で保存しないといけません。
■通常のファイル保存方法
では通常のファイル保存を参考に見ていきましょう。
下記プログラムをご覧ください。
Sub ブックの保存()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”エクセルシート”End Sub
このプログラムではアクティブブックを「エクセルシート」という名前で保存します。
もちろん拡張子は通常ファイル形式の「.xlsx」となります。
ではもう1パターン見てみましょう。
下記プログラムをご覧ください。
Sub ブックの保存()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”エクセルシート.xlsx”End Sub
こちらは先ほどのプログラムに加え、拡張子を指定して「.xlsx」で
保存しています。
こちらも拡張子は通常ファイル形式の「.xlsx」となります。
■「.xlsm」で保存する方法
では本題の「.xlsm」の拡張子で保存してみましょう。
先ほどプログラムの「.xlsx」を「.xlsm」に変えてみました。
Sub ブックの保存()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”エクセルシート.xlsm“End Sub
実行すると下図のようなエラーが発生してしまいます。
実行時エラー’1004′:が発生してしまいました。
皆さんもここで困っているのではないでしょうか。
エラーの内容をみても「この拡張子は、選択したファイル形式には使用できません。」
と書いてありますね。
では解決方法を紹介したいと思います。
「FileFormat」で「.xlsm」でマクロ有効ブックであることを指定すれば解決します。
xlsmの拡張子であれば「 FileFormat:=xlOpenXMLWorkbookMacroEnabled」で
マクロ有効ブックの指定をします。
では実際にプログラムに組み込んだ結果を見てみましょう。
Sub ブックの保存()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”エクセルシート.xlsm”, FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub
こちらでxlsmの拡張子で保存することができました。
ちなみにファイルを保存する際には
①通常ファイルの「xlsx」
②マクロ有効ブックの「xlsm」
③csvファイルの「csv」
④メモ帳の「txt」
の種類がありますがエラーが出るのは②のマクロ有効ブックのみです。
参考までに各フォーマットを載せておきます。
ファイル形式 | フォーマット |
---|---|
xlsx | xlOpenXMLWorkbook |
xlsm | xlOpenXMLWorkbookMacroEnabled |
csv | xlCSV |
text | xlText |
上記を踏まえて見本でもう一事例紹介したいと思います。
拡張子をtxtで保存してみましょう。
プログラムはこのようになります。
Sub テキストでブックを保存()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”エクセルシート”, FileFormat:=xlTextEnd Sub
これで様々な拡張子で保存できるようになりましたね。
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
Workbook.SaveAs メソッド (Excel) | Microsoft Learn
■まとめ
いかがだったでしょうか。
VBAを使用する上でxlsmの拡張子は必須ですが
いざ保存しようとするとエラーが出て困りますよね。
ぜひこの記事をもとにマクロ有効ブックで保存してみてください。
それでは次回の記事でお会いしましょう。
コメント