xlsm(マクロ有効Excel)を新規作成に追加する+共通関数を予め仕込む

Windowsから右クリックでExcelブックを作るのに慣れてしまうと、xlsmのブックを作成したいときに同じ要領で作れないのが面倒です。

↑右クリックの新規作成からだと「Microsoft Excel ワークシート」しか表示されない。

自分は、VBAを使うブックを新規作成したいことが多いので、このメニューにxlsmのブックを追加する方法がないか調べてみることにしました。

レジストリを修正することで新規作成にxlsmを追加できる

調査すると同じようなことを考えている人がいるようで、教えてGooに以下の回答がありました。

—-↓ここから↓—-

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.xlsm\Excel.SheetMacroEnabled.12\ShellNew]

“FileName”=”excel12.xlsm”

—-↑ここまで↑—-

上記をメモ帳などに記述し、適当な名前を付けて保存をしたあとで、ファイル名を「○○.reg」となるように拡張子を変更します。あとで削除するのでファイル名は何でもかまいません。

できたファイルをダブルクリックすることで、そのパソコンのレジストリに記述が組み込まれ、以後、右クリックメニューに「Microsoft Excel マクロ有効ワークシート」が追加されます。

https://oshiete.goo.ne.jp/qa/7760036.html

実際に試してみたところ、新規作成のメニューにマクロ有効ワークシートが追加となりました。

しかし、この方法で作成したxlsmファイルを開こうとすると以下のエラーになってしまいました。

Excelでファイル’新規 Microsoft Excel マクロ有効ワークシート.xlsm’を開くことができません。ファイル形式またはファイル拡張子が正しくありません。ファイルが破損しておらず、ファイル拡張子とファイル形式が一致していることを確認してください。

よく見ると作成されたxlsmファイルのサイズが0になっているんですよね。

おそらくコピー元になるファイルを参照できないと空のファイルが作成されるという仕様のようです。

これだと使い物にならないので、解決方法を模索しました。

色々と試したところ、以下の2つを実施することで解決をさせることができました。

  1. レジストリに追加するFileNameをフルパスにする
  2. excel12.xlsmをレジストリに登録されたパスに配置しておく

レジストリに追加するFileNameをフルパスにする

レジストリに登録する際に、下記のFileNameはフルパスでないといけないようです。(少なくとも私の環境では)

まずパスが何なのか調べる必要があるので、regeditを使用してxlsxのフルパスの値を調べます。

1.Windowsキー + Rキーをクリックして「regedit」と入力する

2.レジストリエディタが立ち上がるので、下記の値を確認するHKEY_CLASSES_ROOT.xlsx\Excel.Sheet.12\ShellNew\FileName

自分の場合は、「C:\Program Files\Microsoft Office\Root\VFS\Windows\ShellNew\」だったので、レジストリに登録する内容を下記のように修正しました。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT.xlsm\Excel.SheetMacroEnabled.12\ShellNew]

“FileName”=”C:\Program Files\Microsoft Office\Root\VFS\Windows\ShellNew\excel12.xlsm”

そしてダブルクリックで上記ファイルを実行します。

excel12.xlsmをレジストリに登録されたパスに配置しておく

上記のレジストリに追加したパスに、実際にexcel12.xlsmがないとエラーを回避できなかったので配置します。

↓自分の場合はデフォルトだとこんな感じになっていたのですが

↓下記のようにEXCEL12.xlsmを追加しました。

これで新規作成からxlsmファイルを直接作れるようになりました。

便利な共通関数を新規作成したxlsmに仕込めるか

ここからは余談なのですが、

今回の調査で「新規作成したときのファイルは元になるファイル(EXCEL12.xlsm)をコピーして作られる」ということがわかりました。

つまり、どのxlsmファイルにも仕込んでおきたい共通関数的なものがあれば、EXCEL12.xlsmに作成しておくことでインポートする手間を減らせそうです。

早速試してみました。

まず、EXCEL12.xlsmを開きます。(自分の場合は、C:\Program Files\Microsoft Office\Root\VFS\Windows\ShellNew\excel12.xlsm)

そして適当に関数を作って保存します。

次に、「右クリック→新規作成→Microsoft Excel マクロ有効ワークシート」から新規でxlsmファイルを開きます。

そして作成されたxlsmファイルのVBAプロジェクトを参照してみると…

しっかりと関数までコピーされた状態で新規作成されていることがわかりました。

このテクニックを使えば、VBAでよく使う関数を予め仕込んだ状態で作成し始められるため、生産性を向上させられそうです。


Excelのフォントを変更しておくことも可能

同じ理屈で、元になるexcel12.xlsmやexcel12.xlsxのフォントを予め変更しておくことで、テンプレートファイルを使わずに新規作成したExcelのフォントを変更できそうです。

↓テーマのフォントを変更しておきます。

そもそもデフォルトの「Yu Gothic」とか好んで使っている人いるんだろうか…。

自分は、見やすくて流行りのメイリオにするか、等間隔フォントであるMS Pゴシックとかしか使わないですねえ。

xlsm新規作成時に、いちいちフォントの変更をしなくて済むので、10秒くらいの時短にはなりそうです。


コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)