Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


29862 / 76733 ←次へ | 前へ→

【52145】Re:既存のメニューを追加するアドインを作成する方法
回答  りん E-MAIL  - 07/10/24(水) 20:44 -

引用なし
パスワード
   やまP さん、こんばんわ。

>以下の内容のアドインを配布したいと思っております。
>・ツールバーに「新メニュー」というオリジナルメニューを作る。
>・「新メニュー」のサブメニューに「値の貼り付け」という既存の機能を追加する。
該当のコマンドのIDを指定することで機能を追加できます。
ただし、EXCEL2003ではId:=370なのですが、ほかのバージョンでは違う可能性があるので、検索するようにしています。

Sub test2()
  Dim cb As CommandBarControl, INum&
  '値貼り付けのコマンドを検索
  For II& = 1 To 40000
   Set cb = Nothing
   On Error Resume Next
   Set cb = Application.CommandBars.FindControl(ID:=II&)
   On Error GoTo 0
   'すでにコマンドバーに乗せていたら後者、それ以外は前者で該当しました(XL2003)
   If Not cb Is Nothing Then
     If cb.Caption = "値(&V)" Or cb.Caption = "値の貼り付け(&P)" Then
      INum& = II&: Exit For
     End If
   End If
  Next
  If INum& = 0 Then
   MsgBox "みつかりませんでした", vbExclamation
  Else
   'メニューバーにコマンド追加
   With Application.CommandBars("Worksheet Menu Bar")
     With .Controls.Add(ID:=INum&)
      .BeginGroup = True
     End With
   End With
  End If
  '
  Set cb = Nothing
End Sub

うまくいかなかったら、一度どれかのバーに乗せてIDを判定し、EXCELのバージョンごとにIDを分岐するようにしてみてください。EXCEL2007はコマンドバーがない(リボンだそうです)という話なのでテストはしていません。

2 hits

【52144】既存のメニューを追加するアドインを作成する方法 やまP 07/10/24(水) 19:13 質問
【52145】Re:既存のメニューを追加するアドインを作... りん 07/10/24(水) 20:44 回答
【52146】Re:既存のメニューを追加するアドインを作... neptune 07/10/24(水) 21:47 回答
【52147】Re:既存のメニューを追加するアドインを作... neptune 07/10/24(水) 22:31 発言
【52150】Re:既存のメニューを追加するアドインを作... やまP 07/10/24(水) 23:17 お礼

29862 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free