Excel2010コンテキストメニューのカスタマイズについて

VBAマクロにより、コンテキストメニューを追加して利用しています。

こんな感じです。
Sub Add_Context_Menu()
Application.CommandBars("Cell").Controls.Add Type:=msoControlButton, ID:=xxx, Before:=4
End sub


そこで以下2件の質問があります。
①コンテキストメニューからあまり使わないコマンドを削除したいので
 CommandBars("Cell").Controls("並べ替え(&O)").Delete
 として削除しました。

 ところが、"名前の定義(&A)...”だけどうしてもエラーとなって削除できません。
 Office2010のCommandBarIDで調べてみると、どうやら"の"と"定"の文字の間に、
 文字コードU+200Bが2文字入っているようです。
 VBAでは認識できないようで?で表示されます。当然、実行するとエラーとなります。
 最も使わないコマンドなので邪魔になって仕方がありません。
 何とかして消す方法はないでしょうか??

②図形描画モードでのコンテキストメニューはカスタマイズできないのでしょうか?
 ("Cell")の部分を("Shape")に直して実行したところ、マクロは正常に終了した(様に見える)のですが、
 結果は何も変化がありませんでした。

どなたか、お知恵を貸して頂ければ幸いです。

よろしくお願いします。

回答
回答

①はLikeを使用して試してはどうでしょうか

Sub macro()
Dim C As CommandBarControl
For Each C In Application.CommandBars("Cell").Controls
If C.Caption Like "名前の*定義(&A)..." Then
  C.Delete
End If
Next C
End Sub

「Shape」ではなく、「Shapes」です。

取得方法は以下で、同じようにExcel2003か2007ぐらいまでは、Deleteで消せたのですが、Excel2010では追加、削除等できなくなっているかもしれません。(手元のExcel2010ではエラーもでず、削除もできませんでした)

Sub macro2()
Dim C As CommandBarControl
For Each C In Application.CommandBars("Shapes").Controls
   MsgBox C.Caption
Next C
End Sub

この回答で問題は解決しましたか?

役に立ちませんでした。

回答としてマークしていただきありがとうございます。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この回答の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

回答
回答
こんにちは。

> ところが、"名前の定義(&A)...”だけどうしてもエラーとなって削除できません。
> Office2010のCommandBarIDで調べてみると、どうやら"の"と"定"の文字の間に、
> 文字コードU+200Bが2文字入っているようです。

Public Sub Sample1()
  Application.CommandBars("Cell").Controls("名前の" & ChrW(&H200B) & ChrW(&H200B) & "定義(&A)...").Delete
End Sub

のようにすることもできますが、スマートではないので、

Public Sub Sample2()
   Application.CommandBars("Cell").FindControl(ID:=13380).Delete
End Sub

のように、IDで指定するのはいかがでしょうか。
各コントロールのIDは下記のようなコードで調べることができます。

Public Sub Sample3()
  Dim c As Office.CommandBarControl
 
  For Each c In Application.CommandBars("Cell").Controls
    Debug.Print c.Caption, c.ID
  Next
End Sub


> ②図形描画モードでのコンテキストメニューはカスタマイズできないのでしょうか?

2007以降、このあたり質問される方が多くなったように思います。

・図形選択時のコンテキストメニュー
http://www.moug.net/faq/viewtopic.php?t=70633
・With Application__ With .CommandBars("Shapes")__ .Reset__ With .Controls.Add(Type:=msoControlPopup, before:=1)__
http://answers.microsoft.com/thread/f45d80ee-5a2d-40f0-8f38-6afa8d1bbf4d
・挿入した図形上で右クリックした時のメニューをマクロで非表示としたい。
http://answers.microsoft.com/thread/a351b326-457d-4a11-80fa-dbab078d531c

2010以降であれば下記ページにあるような方法でカスタマイズ可能なのですが、従来のCommandBarをどうこうする方法ではないので、若干取っつきにくいかもしれません。

・右クリックメニューをカスタマイズする(Word 2010)
http://www.ka-net.org/ribbon/ri36.html

この回答で問題は解決しましたか?

役に立ちませんでした。

回答としてマークしていただきありがとうございます。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この回答の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

 
 

質問情報


最終更新日 2020年5月11日 表示 1,786 適用先: