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

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

ワークブック保存時の拡張子は.xlsm

Excelはデータの保存が出来ます。

ファイルタブをクリックして左側の緑のリボンを見てください。

「上書き保存」、「名前を付けて保存」という文字が並んでいます。(Excel2019の場合です)

「当たり前だろう」とお叱りを受けるような内容ですがマクロはどうでしょうか?

マクロでも保存する事ができるのですが通常の方法では保存が出来ません。

気を付けないとマクロを保存することができないです。加えてマクロを消してしまう事になります。

EnjoyExcel
EnjoyExcel

保存する時拡張子に気を付けて保存しないとマクロが消えてしまいます

ではどの拡張子を使えばマクロが保存出来るのでしょうか

結論は.xlsmなのですがもう少し広げて考えましょう。.xlsmを使わないといけない理由も紹介します。

前回の記事

この記事はVBA-1~VBA-14のシリーズで展開している中の1記事です。VBA-1と2の間の補足記事のつもりで用意しました。

前回記事はVBA-1になります。今回のVBA-1.5を読んでいただいたあとはVBA-2に進んでください。

本記事での課題

今回の課題です。

EnjoyExcel
EnjoyExcel
課題

各種 拡張子について理解しよう

初心者向けエクセルマクロ学習シリーズ

拡張子とは

端的に申し上げますと「識別用のキーワード」です。Wikipediaを引用します。

拡張子とはファイルの種類を識別する為にファイル名の末尾につけられる文字列

Wikipedia:拡張子から引用

役割としてはWikipediaの引用文にあるように識別です。Microsoftのドキュメントにも同様の表記があります。

拡張子によって、ファイルがどのアプリケーションによって作成されたか (どのアプリケーションでそのファイルを開くことができるか)、そのファイルにどのアイコンをするかが判断されます。

Microsoft:Windows の一般的なファイル名拡張子から引用

すぐ上のMicrosoftのドキュメントにはWindows内で使われる主な拡張子が100個ほど紹介されています。

興味がある方はリンク先の記事をご覧ください。

結論:拡張子は.xlsm一択

早速結論です。.xlsmという拡張子を使います。

回答です
Q
マクロ付きのデータの保存方法を教えてください
A

マクロ付のデータは .xlsm で保存しましょう

以下画像をご確認ください。リスト形式+フローにしてみました。

データ保存方法

通常のExcelファイルと同じように「名前をつけて保存」で保存する事になります。

保存時ににファイルの種類でExcelマクロ有効ブック(*.xlsm)を選択してください。

  • アイコンに!マークが付いている
  • 保存したデータの拡張子が.xlsmになっている

データ保存後この2つを確認し両方とも出来ていれば作業完了です。

余談ですが「!」この通称ビックリマークは「エクスクラメーションマーク」と言います。

続いて他の拡張子についても少し解説をしていきます。

.xls について

この拡張子はマクロを持つことが出来ます。しかしおすすめは出来ません。

Excel2003以前で準備されていた拡張子です。

現行のExcelで表示する際は互換性確認を行った結果変換して表示される様になっています。

マクロを保存する機能を持ち合わせています。

ただし先程紹介した様にExcel2007以降でデータを開く際ワークシートは互換表示されます。

本来期待されている機能がうまく動作しない可能性があります。

よって積極的に採用したくないところです。

.xlsx について

この拡張子はマクロを持つことが出来ません。

Excel2007以降に新設された拡張子です。

この拡張子はマクロを持てません。よってマクロ付エクセルの保存は出来ません。

言い換えるとマクロを持っているExcelを.xlsxで保存し直すとマクロは消えます

.xlsmのデータを.xlsxで保存しようとすると上記ダイアログがアクティブになります。

「はい」を選択すると.xlsxでデータは保存されますがマクロは消えます。

.xlsmについて

この拡張子はマクロを持つことが出来ます。.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を変えたのか?」と思いませんか。私は思いました。

拡張子変えるのはかなり大きな事ですよ。

何処調べて良いのか分からないので私が思った事を書きます。

様々な原因の中の1つにウイルス対策が入っていたのではないかと推測されます。

開いてみないと分からないデータは怖い

.xlsは開いて実行してみないとマクロの有無が分かりません。

悪いマクロが仕込まれていても開かないと分かりません。

例えば「ファイルを開いたのと同時にデスクトップのアイコン全部消す」というデータがあったとします。

.xlsの時はデータを開かないとマクロが仕込まれているのかすら分かりません。

開いた時にはもう遅いです。やられてしまいます。

開く前に安全性をある程度判断出来るようにする必要があります。

素性の分からないデータを開かなくても良い様に対策したのだと思います。

データを開く前に安全確認ができる様になった

.xlsxはマクロ持ってないのでマクロに内臓されたウイルスを拡散されることはないだろうと予測出来ます。

ある程度安心してファイルを開けます。

拡張子やアイコンの見た目でマクロ付きデータだと分かる事で被害を防ぐことが出来ます。

データソースが安心出来るもの以外はデータを開かない」等の対策が取れます。という推測でした。

まとめ

結論としてはほぼ一択です。「.xlsm」で保存していきましょう。

本日勉強したこと
  1. .xlsm を使いましょう
  2. .xlsx はマクロを保存出来ない
  3. .xls は極力使わない
拡張子を使い分けよう

Enjoy Excel

エクセルは数十年の間最前線で活躍しているアプリケーションです。

フォーマットはほぼ決まっている様に感じますが何回か大きな変更を繰り返し今に至ります。

VBA(マクロ)も30年前後経過しますのでそろそろ大きな変更があるかもしれません。

関数もどんどん追加されます。付いていくのは大変ですが一緒に勉強していきましょう。

では次の記事 環境構築 に進みましょう。ここから実際にエクセルを開いて作業をしていきます。

参考:おすすめ書籍

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

EnjoyExcel
EnjoyExcel

「マクロを勉強するのは少しでも仕事を効率化させる為」であり

「マクロを完璧にマスターするわけではない」という考えのもと書かれた本です。

タイトルとURLをコピーしました