4

VBA で簡単な Excel アドインを作成しました。フォームと関連コードが含まれています。アドインとして保存し、Excel にインストールした後、何も起こりませんでした。

アドインをトリガーするボタンをリボンのどこかに配置する必要があります。「ソルバー」などです。本当に必要なのですが、方法を教えてください。

どんな提案でも本当に感謝しています。

4

1 に答える 1

14

これを試してください。モジュールまたは ThisWorkbook のいずれかで、アドインに追加する必要があります。

Private Const Button as String = "SomeName"

Sub Auto_Open   'Or Private Sub Workboo_Open() in ThisWorkbook
Dim CmdBar as CommandBar
Dim CmdBarMenu as CommandBarControl
Dim CmdBarMenuItem as CommandBarControl

Set CmdBar = Application.CommandBars("Worksheet Menu Bar")
Set CmdBarMenu = CmdBar.Controls("Tools")   ' Index 6

On Error Resume Next
   Application.DisplayAlerts = False
   CmdBarMenu.Controls(Button).Delete 'Just in case a button with same name already exists
   Application.DisplayAlerts = True
On Error GoTo 0

Set CmdBarMenuItem = CmdBarMenu.Controls.Add(Type:=msoControlButton)
With CmdBarMenuItem
     .Caption = Button
     .OnAction = "MainSub"    'Name of the sub it will call when button is pushed
End With

End Sub

Excel を閉じるときにボタンを必ず削除してください。そうしないと、アドインを開くたびに追加のボタンが追加されます。

Sub Auto_Close 'Or Private Sub Workbook_BeforeClose(Cancel As Boolean) in ThisWorkbook
Dim CmdBar as CommandBar
Dim CmdBarMenu as CommandBarControl

Set CmdBar = Application.CommandBars("Worksheet Menu Bar")
Set CmdBarMenu = CmdBar.Controls("Tools")   ' Index 6

On Error Resume Next
   Application.DisplayAlerts = False
   CmdBarMenu.Controls(Button).Delete
   Application.DisplayAlerts = True
On Error GoTo 0

End Sub

ボタンから実行したい作成したサブ。

Public Sub MainSub
MsgBox("Hello")
End Sub

アドイン リボンにリスト ボックスを追加して、複数のボタンを保持することもできます。最初に MenuItem を type:=msoControlPopup として作成し、次に上記のようにポップアップ内にボタンを追加します。

この VBA コードと同様に、[ファイル] -> [オプション] -> [リボンのカスタマイズ] に移動し、新しいグループを含む新しいタブを追加して、そのグループにマクロを割り当てる方がはるかに簡単です。しかし、それはあなたにしか機能しません.上記のコードは、誰でもアドインをインストールし、開くときにボタンを自動化できるようにします.

これがあなたの質問に答えることを願っています。

于 2012-06-25T01:56:11.027 に答える