1. ホーム
  2. excel

[解決済み] VBAを使用してカスタムリボンタブを追加するには?

2022-10-12 13:19:13

質問

Excel リボンにカスタム タブを追加して、いくつかのボタンを表示させる方法を探しています。Google でそれに対処するいくつかのリソースを偶然見つけましたが、どれも怪しげで非常に複雑に見えます。

それを行うための迅速で簡単な方法は何ですか?私の VBA が Excel にロードされたときに、新しいタブがロードされるようにしたいのです。

UPDATE : この例は この を試してみましたが、最後の命令で "object required" エラーが発生しました。

Public Sub AddHighlightRibbon()
Dim ribbonXml As String

ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + "  <mso:ribbon>"
ribbonXml = ribbonXml + "    <mso:qat/>"
ribbonXml = ribbonXml + "    <mso:tabs>"
ribbonXml = ribbonXml + "      <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + "        <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
ribbonXml = ribbonXml + "          <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
ribbonXml = ribbonXml + "        </mso:group>"
ribbonXml = ribbonXml + "      </mso:tab>"
ribbonXml = ribbonXml + "    </mso:tabs>"
ribbonXml = ribbonXml + "  </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"

ActiveProject.SetCustomUI (ribbonXml)
End Sub

どのように解決するのですか?

Excel VBA を使用して、Excel リボンにカスタム タブを作成することはできないようです。しかし、VBA を使用してリボン コンポーネントを表示/非表示にすることはできます。また、上記のリンクは MS Project 用のものであり、MS Excel 用のものではありません。

という無料のユーティリティを使用して、Excel アプリケーション/アドインのタブを作成します。 カスタム UI エディター .


編集: OP による新しい要求に対応するため。

チュートリアル

お約束の簡単なチュートリアルです。

  1. Custom UI Editor (CUIE) をインストールした後、CUIE を開き、[ファイル|開く] をクリックして、関連する Excel ファイルを選択します。CUIE で開く前に、Excel ファイルが閉じられていることを確認してください。例として、全く新しいワークシートを使用しています。

  2. 下の画像のように右クリックし、「"Office 2007 Custom UI Part"」をクリックします。これにより、"customUI.xml" が挿入されます。

  3. 次に、メニュー「挿入|サンプルXML|カスタムタブ」をクリックします。基本的なコードが自動的に生成されることに気づくでしょう。これで、要件に応じて編集するためのすべての準備が整いました。

  4. コードを検証してみましょう

    label="Custom Tab" : Custom Tab"の部分を、タブの名前に置き換えてください。ここでは、「ジェローム」と呼ぶことにします。

    下の部分は、カスタムボタンを追加します。

    <button id="customButton" label="Custom Button" imageMso="HappyFace" size="large" onAction="Callback" />
    
    

    imageMso : これはボタンに表示される画像です。 その他の画像IDはこちらでダウンロードできます .

    onAction="Callback" : "Callback"は、ボタンをクリックしたときに実行されるプロシージャの名前です。

デモ

それでは、2つのボタンを作成し、「JG Button 1」と「JG Button 2」と名付けましょう。1つ目のボタンの画像はハッピーフェイスのまま、2つ目のボタンの画像は"Sun"のままにしておきます。修正後のコードは次のようになります。

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="MyCustomTab" label="Jerome" insertAfterMso="TabView">
<group id="customGroup1" label="First Tab">
<button id="customButton1" label="JG Button 1" imageMso="HappyFace" size="large" onAction="Callback1" />
<button id="customButton2" label="JG Button 2" imageMso="PictureBrightnessGallery" size="large" onAction="Callback2" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

CUIEで生成されたコードをすべて削除し、その代わりに上記のコードを貼り付けます。保存してCUIEを閉じます。これで、Excel Fileを開くと以下のようになります。

では、コード部分です。VBA Editorを開き、モジュールを挿入し、以下のコードを貼り付けます。

Public Sub Callback1(control As IRibbonControl)

    MsgBox "You pressed Happy Face"

End Sub

Public Sub Callback2(control As IRibbonControl)

    MsgBox "You pressed the Sun"

End Sub

Excelファイルをマクロ有効なファイルとして保存します。これで、スマイリーや太陽をクリックすると、関連するメッセージボックスが表示されます。

これが役に立つといいのですが!