プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBAにて、ブックを開くと自動メニューバーにメニューを追加するというコードを作成しています。
メニューの追加そのものは問題なく出来たのですが、例えば追加された状態で上書き保存し、再度開くと、1つ追加された状態でもう1つメニューが追加されてしまうという状況となってしまいました。

IF文で重複の判定ができると良いのですが、コードが分からなくて困っております。どなたかご教授下さい。

そしてもう1つ、メニューバーに追加した新しいメニューについて、手動でリセットする方法はありますでしょうか。表示→メニューバー→ユーザ設定でリセットしてもユーザ設定だけは保持されるようで...
こちらもお願いします。

コードはそのまま貼り付けるとNGワードに引っかかるので(何故かは分かりません)、申し訳ありませんがプリントスクリーンしたものを画像として添付致します(こちらも回避する方法があれば良いのですが...OKWaveは使いづらいです)。

「エクセルVBA メニューバーにメニューを」の質問画像

A 回答 (2件)

こんばんは。



ためしに直してみました。自前のメニューには、必ず、Temporary 属性をTrue にしてください。

'-------------------------------------------
Sub Auto_Open()
  Dim MyCB As CommandBar
  Dim myMenu As CommandBarPopup
  Dim myMenuCom As CommandBarButton
  Dim cnt As Integer
  Set MyCB = Application.CommandBars("WorkSheet Menu Bar")
  With MyCB
    On Error Resume Next
    .Controls("オリジナルプログラム(&C)").Delete
    On Error GoTo 0
  End With
  cnt = MyCB.Controls.Count
  With MyCB.Controls.Add(Type:=msoControlPopup, Before:=cnt + 1, Temporary:=True)
    .Caption = "オリジナルプログラム(&C)"
    Set myMenuCom = .Controls.Add(Type:=msoControlButton)
  End With
  With myMenuCom
    .Caption = "メインメニュー(&U)"
    .OnAction = "menu_open"
    .BeginGroup = False
    .FaceId = 610
  End With
End Sub
    • good
    • 1
この回答へのお礼

回答ありがとうございます。その通りにやってみたらばっちりでした。

お礼日時:2009/12/03 20:17

こちらのような手法はいかがでしょう。


作成済みであればいったん削除
存在しないとエラーが出るが、On Error…で回避

1.1 新しいメニューを追加する
http://www.happy2-island.com/access/gogo03/capte …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!