VBAの勉強を始めてみた

色々試しています。

Excel.officeUIを移植した際の「申し訳ございません。同じ名前のブックを同時に開くことはできません。」の対処法

先日、新しいPCを購入したので旧PCからExcel.officeUIと個人用マクロブックを移植しました。が、それに関連して発生したエラーについて原因と対処法をメモしておきます。

その前に、
officeUIとは
リボンやクイックアクセスツールバーのユーザー設定が記録されたファイルで、C:\Users\ユーザー名\AppData\Local\Microsoft\Officeに保存されています。(エクセルならExcel.officeUI、ワードならWord.officeUIというようなファイル名)

個人用マクロブックとは
個々のブックに依存しない汎用的なマクロが記述された(記述するための)ブックで、エクセル起動時に毎回非表示で読み込まれます。C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTARTに、PERSONAL.XLSBというファイル名で保存されています。

 

ということで、これらのファイルをまるっと移植して旧PCからの引き継ぎ完了!となる予定だったのですが、リボンやクイックアクセスツールバーから個人用マクロを実行すると下のようなメッセージが

f:id:kouten0430:20190408143906p:plain

え?

 

試しにVBE上で実行するとエラーは発生しなかったので、リボンやクイックアクセスツールバーから実行する場合にのみ不具合が起こる模様です。登録されたマクロをユーザー設定画面で再登録すれば不具合は起こらないようですが、それなりに数があるのでそんなことはやりたくない訳です。
で、色々調べているうちにExcel.officeUIをメモ帳で開いてみると下のようなことが分かりました。(注:文字コードUTF-8で開く必要あり)

f:id:kouten0430:20190408144006p:plain

個人用マクロブックを特定するための、絶対パスのユーザー名が旧PCのものになっている(ちなみにNAOは私の本名の一部)。
ということで、ユーザー名の部分を旧PCから新PCのものに一括置換し、上書き保存してみることに。

結果、リボンとクイックアクセスツールバーからもエラーなく実行できるようになりました。(エクセルのバージョンによってパスの階層が異なる場合は、パス全体を置換すればいけるはず・・・・・・)

もしかすると、もっとスマートな方法があるのかもしれないけど。

 

追記:
リボンのユーザー設定画面でユーザー設定をエクスポート/インポートする方法でも、個人用マクロが含まれている場合には同じエラーが発生します(エクスポートされたExcel Customizations.exportedUIファイルをメモ帳で開くと、中身はExcel.officeUIとほぼ同じことが分かります)。インポートする前にパスを修正することでエラー回避できます。