ワークブック保存時の拡張子は.xlsm
Excelはデータの保存が出来ます。
ファイルタブをクリックして左側の緑のリボンを見てください。
「上書き保存」、「名前を付けて保存」という文字が並んでいます。(Excel2019の場合です)
「当たり前だろう」とお叱りを受けるような内容ですがマクロはどうでしょうか?
マクロでも保存する事ができるのですが通常の方法では保存が出来ません。
気を付けないとマクロを保存することができないです。加えてマクロを消してしまう事になります。
保存する時拡張子に気を付けて保存しないとマクロが消えてしまいます
ではどの拡張子を使えばマクロが保存出来るのでしょうか。
結論は.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という拡張子を使います。
以下画像をご確認ください。リスト形式+フローにしてみました。
データ保存方法
通常のExcelファイルと同じように「名前をつけて保存」で保存する事になります。
保存時ににファイルの種類でExcelマクロ有効ブック(*.xlsm)を選択してください。
- 「アイコンに!マークが付いている」
- 「保存したデータの拡張子が.xlsmになっている」
データ保存後この2つを確認し両方とも出来ていれば作業完了です。
余談ですが「!」この通称ビックリマークは「エクスクラメーションマーク」と言います。
続いて他の拡張子についても少し解説をしていきます。
.xls について
Excel2003以前で準備されていた拡張子です。
現行のExcelで表示する際は互換性確認を行った結果変換して表示される様になっています。
マクロを保存する機能を持ち合わせています。
ただし先程紹介した様にExcel2007以降でデータを開く際ワークシートは互換表示されます。
本来期待されている機能がうまく動作しない可能性があります。
よって積極的に採用したくないところです。
.xlsx について
Excel2007以降に新設された拡張子です。
この拡張子はマクロを持てません。よってマクロ付エクセルの保存は出来ません。
言い換えるとマクロを持っているExcelを.xlsxで保存し直すとマクロは消えます。
.xlsmのデータを.xlsxで保存しようとすると上記ダイアログがアクティブになります。
「はい」を選択すると.xlsxでデータは保存されますがマクロは消えます。
.xlsmについて
Excel2007以降に新設された拡張子です。この拡張子はマクロを持てます。
よってマクロ付エクセルの保存はこの拡張子でほぼ決定です。
.xlsm から .xls への互換
Excel2003を使っている方にデータを転送する際は.xlsでデータを準備する必要があります。
もとは.xlsという拡張子だったので昔の拡張子を使って保存し直すという事になりますね。
そもそも「今Excel2003使っている人なんているのか?」という考え方もあります。
もちろん「そんな人はものすごく少ない」とは思っていますが全く居ないとは言い切れません。
実際にデータを保存する時は.xlsmから.xlsへ拡張子を跨いでデータを保存することになります。
操作上データ自体は準備出来るのですが機能の保証が出来ない様です。
.xlsmから.xlsに拡張子を変えて保存を行うと「機能が保証されませんよ」という警告が出ます。
Ver.2003より前のExcelを使っている方にデータを渡してもうまく開けない可能性があります。
無理矢理開く事も出来ない
ではExcel2003以前のバージョンを使用している方はこうするかもしれません。
「.xlsxや.xlsmのデータをもらって無理矢理開けばなんとかなるのでは」と考える人も居ます。
しかしそれは無理です。データを展開するには互換表示用のアドインが必要(らしい)です。
確かな事は言えないのですがサクッとデータを開くというわけにはいかない様です。
ちょっと無理なお願いですが「最新版のExcel買ってください」とお願いしてみましょう。
というわけでマクロを積んだExcelデータの拡張子は極力.xlsmでの運用をおすすめします。
例外(読み飛ばし可)
さらに.xlsmをExcel 5.0/95用の.xlsに変換して保存する際は以下の様なアラートが出ます。
何故拡張子を分けたのか?(推測)
そもそも「なんで拡張子.xlsを変えたのか?」と思いませんか。私は思いました。
拡張子変えるのはかなり大きな事ですよ。勉強をしていた当時の私は拡張子を変えた理由が知りたくて調べてみました。
調べた結果理由は分かりませんでしたがVBAを使ってきて私なりに気付いたこと、思った事から理由を推測できました。
様々な原因があるとは思いますがコンピュータウイルスなどのセキュリティ対策だったのではないかと考えています。
開いてみないと分からないデータは怖い
.xlsは開いて実行してみないとマクロの有無が分かりません。
よって悪いマクロが仕込まれていても開かないと分かりません。
例えば「ファイルを開いたのと同時にデスクトップのアイコン全部消す」というデータがあったとします。
.xlsの時はデータを開かないとマクロが仕込まれているのかすら分かりません。
開いた時にはもう遅いです。ウイルスにやられてしまいます。
という事はファイルを開く前に安全性をある程度判断出来るようにする必要があります。
以上のことから素性の分からないデータを開かなくても良い様に対策したのだと思うようになりました。
データを開く前に安全確認ができる様になった
.xlsxはマクロ持ってないのでマクロに内臓されたウイルスを拡散されることはないだろうと予測出来ます。
ある程度安心してファイルを開けます。
拡張子やアイコンの見た目でマクロ付きデータだと簡単に判断できる様にすることで被害を防ぐことが出来ます。
「データソースが安心出来るもの以外はデータを開かない」等の対策が取れます。という推測でした。
まとめ
結論としてはほぼ一択です。「.xlsm」で保存していきましょう。
- .xlsm を使いましょう
- .xlsx はマクロを保存出来ない
- .xls は極力使わない
Enjoy Excel
エクセルは数十年の間最前線で活躍しているアプリケーションです。
フォーマットはほぼ決まっている様に感じますが何回か大きな変更を繰り返し今に至ります。
VBA(マクロ)も30年前後経過しますのでそろそろ大きな変更があるかもしれません。
関数もどんどん追加されます。付いていくのは大変ですが一緒に勉強していきましょう。
では次の記事 環境構築 に進みましょう。ここから実際にエクセルを開いて作業をしていきます。
参考:おすすめ書籍
初心者様向けの書籍です。多くの書籍とは一風変わった事を書いてますが共感が持てたので紹介します。
「マクロを勉強するのは少しでも仕事を効率化させる為」であり
「マクロを完璧にマスターするわけではない」という考えのもと書かれた本です。