VBA-1.5なぜマクロ付ブックの保存時の拡張子は.xlsmなのか

ワークブック保存時の拡張子は.xlsm
Excelはデータの保存が出来ます。
ファイルタブをクリックして左側の緑のリボンを見てください。
「上書き保存」、「名前を付けて保存」という文字が並んでいます。(Excel2019の場合です)
ここまでは「当たり前だろう」とお叱りを受けるような内容ですがマクロはどうでしょうか?
マクロでも保存する事ができるのですが通常の方法では保存が出来ません。
気を付けないとマクロを保存することができないです。加えてマクロを消してしまう事になります。
EnjoyExcel保存する時拡張子に気を付けて保存しないとマクロが消えてしまいます
ではどの拡張子を使えばマクロが保存出来るのでしょうか。
結論は.xlsmなのですがもう少し広げて考えましょう。.xlsmを使わないといけない理由も紹介します。
前回の記事
本記事はVBA-1~VBA-14のシリーズで展開している中の1記事です。VBA-1と2の間の補足記事として用意しました。
前回記事はVBA-1になります。今回のVBA-1.5を読んでいただいたあとはVBA-2に進んでください。


本記事での課題
今回の課題です。



課題:
各種 拡張子について理解しよう
拡張子とは
端的に申し上げますと「識別用のキーワード」です。Wikipediaを引用します。
拡張子とはファイルの種類を識別する為にファイル名の末尾につけられる文字列
Wikipedia:拡張子から引用
役割としてはWikipediaの引用文にあるように識別です。Microsoftのドキュメントにも同様の表記があります。
拡張子によって、ファイルがどのアプリケーションによって作成されたか (どのアプリケーションでそのファイルを開くことができるか)、そのファイルにどのアイコンをするかが判断されます。
Microsoft:Windows の一般的なファイル名拡張子から引用
すぐ上のMicrosoftのドキュメントにはWindows内で使われる主な拡張子が100個ほど紹介されています。
興味がある方はリンク先の記事をご覧ください。
結論:拡張子は.xlsm一択
早速結論です。.xlsmという拡張子を使います。
- マクロ付きのデータの保存方法を教えてください
-
マクロ付のデータは .xlsm で保存しましょう
以下画像をご確認ください。リスト形式+フローにしてみました。


データ保存方法
通常のExcelファイルと同じように「名前をつけて保存」で保存する事になります。
保存時ににファイルの種類でExcelマクロ有効ブック(*.xlsm)を選択してください。
- 「アイコンに!マークが付いている」
- 「保存したデータの拡張子が.xlsmになっている」
データ保存後この2つを確認し両方とも出来ていれば作業完了です。
余談ですが「!」この通称ビックリマークは「エクスクラメーションマーク」と言います。
続いて他の拡張子についても少し解説をしていきます。
.xls について
この拡張子はマクロを持つことが出来ます。しかしおすすめは出来ません。
Excel2003以前で準備されていた拡張子です。
現行のExcelで表示する際は互換性確認を行った結果変換して表示される様になっています。
マクロを保存する機能を持ち合わせています。
ただし先程紹介した様にExcel2007以降でデータを開く際ワークシートは互換表示されます。
本来期待されている機能がうまく動作しない可能性があります。
よって積極的に採用したくないところです。
.xlsx について
この拡張子はマクロを持つことが出来ません。
Excel2007以降に新設された拡張子です。
この拡張子はマクロを持てません。よってマクロ付エクセルの保存は出来ません。
言い換えるとマクロを持っているExcelを.xlsxで保存し直すとマクロは消えます。


.xlsmのデータを.xlsxで保存しようとすると上記ダイアログがアクティブになります。
「はい」を選択すると.xlsxでデータは保存されますがマクロは消えます。
.xlsmについて
この拡張子はマクロを持つことが出来ます。.xlsmでデータを保存しましょう。
Excel2007以降に新設された拡張子です。この拡張子はマクロを持てます。
よってマクロ付エクセルの保存はこの拡張子でほぼ決定です。
何故拡張子を分けたのか?(推測)
そもそも「なんで拡張子.xlsを変えたのか?」と思いませんか。私は思いました。
拡張子変えるのはかなり大きな事です。勉強をしていた当時の私は拡張子を変えた理由が知りたくて調べました。
結果理由は分かりませんでしたがVBAを使ってきて私なりに気付いたこと、思った事から理由を推測できました。
様々な原因があるとは思いますがコンピュータウイルスなどのセキュリティ対策だったと思う様になりました。
開いてみないと分からないデータは怖い
.xlsは開いて実行してみないとマクロの有無が分かりません。
よって悪いマクロが仕込まれていても開かないと分かりません。
例えば「ファイルを開いたのと同時にデスクトップのアイコン全部消す」というデータがあったとします。
.xlsの時はデータを開かないとマクロが仕込まれているのかすら分かりません。
開いた時にはもう遅いです。ウイルスにやられてしまいます。
という事はファイルを開く前に安全性をある程度判断出来るようにする必要があります。
以上のことから素性の分からないデータを開かなくても良い様に対策したのだと思うようになりました。
データを開く前に安全確認ができる様になった
.xlsxはマクロ持ってないのでマクロに内臓されたウイルスを拡散されることはないだろうと予測出来ます。
ある程度安心してファイルを開けます。
拡張子やアイコンの見た目でマクロ付きデータだと簡単に判断できる様にすることで被害を防ぐことが出来ます。
「データソースが安心出来るもの以外はデータを開かない」等の対策が取れます。という推測でした。
まとめ
結論としてはほぼ一択です。「.xlsm」で保存してください。
では次の記事 環境構築 に進みましょう。ここから実際にエクセルを開いて作業をしていきます。


参考:おすすめ書籍
初心者様向けの書籍です。多くの書籍とは一風変わった事を書いてますが共感が持てたので紹介します。



「マクロを勉強するのは少しでも仕事を効率化させる為」であり
「マクロを完璧にマスターするわけではない」という考え方です
