ツールバーにマクロを登録して使用している場合に、ハードディスク上での運用
は問題無く、そのファイルをフロッピーディスクにコピーして使用したものを
再度ハードディスクにコピーして、ツールバーに登録したマクロを実行しようと
すると、「ファイルが見つかりません」というエラーが出て、マクロを実行する
ことができなくなる、という現象があります。
原因と対策として、次のようなことが考えられます。
○ファイルと一緒にツールバーもフロッピーにコピーできる以上
ツールバーをブックに添付してると仮定します。
そこで次のようなことが原因に考えられます。
たとえば
A.xls
B.xls
と2つのブックがあり、それぞれにマクロが書かれています。
ツールバーのボタンに「A.xls」のマクロと「B.xls」のマクロを登録します。
そして、そのツールバーを「A.xls」に添付します。
この場合、一見なんでもないようですが、ひとたびそのブックを
移動すると、「B.xls」のマクロを登録したボタンを押しても
そのマクロは実行できません。
つまり、ツールバーを添付したブックと、ボタンに登録したマクロが
書かれているブックが異なるのは厳禁なんです。
なぜなら、ブックが異なると、ボタンには「ブック名+マクロ名」だけでなく
「ボタンを登録した時点でのブックの絶対パス+ブック名+マクロ名」が
情報として記憶されるため、ひとたびブックを移動すると、その絶対パスの情報が
乱れてExcelがマクロの存在場所を見失うのです。
この現象はこのケースに相当すると考えられます。
もし、相当しているのであれば、ツールバーの添付ブックと
マクロの登録ブックが異なるようなマクロの登録の仕方はやめるか
もしくは、手作業の登録はやめて
Private Sub Workbook_Open()
の中で、OnActionプロパティを使ってマクロを登録するようにしましょう。
○あるファイル上でのみ使うオリジナルのツールバーでは注意が必要です。
たとえばあるファイルに添付されたツールバーを[aut_open]をつかって
Application.CommandBars("llp施設基本台帳").Visible = True
としているとします。
"llp施設基本台帳"は、このファイルに添付されているツールバーで
このツールバー上に配置されたボタンのマクロもこのファイルに、保存されて
いるとします。
このばあい
Application.CommandBars("llp施設基本台帳").Visible = False
ではなくて
Application.CommandBars("llp施設基本台帳").Delete
で、いったん削除してしまいます。
削除したらなくなってしまうと思いがちですが、
削除をしておかないと、このファイルを閉じてから
ツールバーを右クリックしてみますと、表示できるツールバー一覧の中に
さきほど閉じられたファイルにのみ添付したはずの"llp施設基本台帳"が
残ってしまっているのです。
これだけならばいいのですが、エクセルを終了をさせてしまうと
ツールバー・ファイル*****8.xlb
にこの情報が書きこまれてしまい、次にほかのブックを開いたときにも
"llp施設基本台帳"が残ってしまったりするのです。
また最悪なパターンが、ツールバーを添付したブックを名前を変更して
保存してしまったりすると、エクセルを終了した時点で、さきほどのように
ツールバーが残っていてツールバー・ファイル*****8.xlb
に、上書きされてしまったら次に、さきほど名前を付けて保存したファイルの
「元ファイル」をひらいて[aut_open]を実行してしまうと
開いたブックに添付された"llp施設基本台帳"ではなく
ツールバー・ファイル*****8.xlb
に、保存された"llp施設基本台帳"を表示してしまいます。
つまり、見た目はおんなじボタンでも、マクロのパスが別のところになって
いるというわけです。
|