• ベストアンサー

他のBOOKにマクロを反映させない様にするには?

Excel VBA初心者です。 エクセルのWorkbook Openイベントでワークシートメニューバーを非表示にしています。 マクロを作成したBookを開いてから他のBookを開いた場合はワークシートメニューバーは表示されるのですが(マクロは反映されない。)、他のBookを開いた後、マクロを作成したBookを開いた場合ワークシートメニューバーが他のBookまで非表示になってしまいます。(マクロが反映される。) マクロを作成したBookをその他Bookから常に独立させて(別のインスタンス?として開く??)開く様にするにはどうしたらよろしいでしょうか? 以下がOpenイベントです。 Private Sub Workbook_Open() Application.ScreenUpdating = False '動きを見せない Application.DisplayAlerts = False '選択画面をとばす Application.IgnoreRemoteRequests = True '他のアプリケーションを無視 Application.CommandBars("Worksheet Menu Bar").Enabled = False 'メニューバー非表示 ~以下長々とあります。~ End Sub 宜しくお願い致します。 ※メニューバー非表示は、社内に配布した場合にシート内容を変更されたくないためです。

質問者が選んだベストアンサー

  • ベストアンサー
  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.2

マクロを作成したWorkbookのActiveイベントとDeactiveイベントにそれぞれ追加したらいかがですか? Activeイベント Application.CommandBars("Worksheet Menu Bar").Enabled = False Deactiveイベント Application.CommandBars("Worksheet Menu Bar").Enabled = True そうすれば対象のBookから他のBookに移動する際にメニューバーの表示が切り替わると思います。

hassyrock
質問者

お礼

ご回答ありがとうございます。 たしかにご回答頂きました方法で表示される様になるのですが、マクロが他のBookへ反映されている状態は変わらない為、以下の問題がおこります。 マクロ付きのBookはCloseイベントでBookの×ボタンを押すと自動的に保存して閉じる状態になっている⇒他のBookを開いた後マクロ付きBookを開く⇒他のBookの×ボタンを押す⇒エラーが発生。 すいませんがご教授の程、宜しくお願い致します。

hassyrock
質問者

補足

補足致します。 CloseイベントでBook名の指定も考えたのですが、Book名はユーザーに自由に変更できる様にしたいので、指定する方法とりませんでした。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

別途「保存終了ボタン」を用意し、保存終了のマクロはそこから走らせるようにして×クリックじゃ終了できないようにしたらどうでしょう? Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "×はダメ!Closeボタンで終了してください。", vbCritical Cancel = True End Sub

hassyrock
質問者

お礼

ご回答ありがとうございます。 最終的にはmerlionXX様とNo,3様のアドバイスで落着きそうなのですが、 No,3様のお礼欄に記載した様に、マクロを作成したBookをその他Bookから常に独立させて開く様にしたいのですが…。 方法は無いのでしょうか?

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.3

>すいませんがご教授の程、宜しくお願い致します。 わかりません。 回答者は質問に記載されていることからしか判断できません。新しいことを追加すれば、当然それ以外の操作に影響が出る可能性はあります。 >マクロ付きのBookはCloseイベントでBookの×ボタンを押すと自動的に保存して閉じる状態になっている⇒他のBookを開いた後マクロ付きBookを開く⇒他のBookの×ボタンを押す⇒エラーが発生。 現象だけ報告されても対策はわかりません。 ご質問者のプログラムのデバッグをするつもりはありませんので、これ以上回答は控えさせていただきます。

hassyrock
質問者

お礼

申し訳御座いません。 質問の仕方が悪くて申し訳御座いません。 ご回答頂きたかった事は"マクロを作成したBookをその他Bookから常に独立させて(別のインスタンス?として開く??)開く様にするにはどうしたらよろしいでしょうか?"という部分だったのですが…。 ご回答ありがとう御座いました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>シート内容を変更されたくないためです。 シートの保護ではダメなのですか?

hassyrock
質問者

お礼

早速のご意見ありがとうございます。 シートも保護はしております。 しかしシート保護はPASSを設定していても少し知識があればフリーソフト等で簡単に解除できます。 ※マクロも同じなのですが…orz。 あとは構文を省略したいという勝手な理由です。

関連するQ&A