[解決済み] VBAを使用してカスタムリボンタブを追加するには?
質問
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 による新しい要求に対応するため。
チュートリアル
お約束の簡単なチュートリアルです。
-
Custom UI Editor (CUIE) をインストールした後、CUIE を開き、[ファイル|開く] をクリックして、関連する Excel ファイルを選択します。CUIE で開く前に、Excel ファイルが閉じられていることを確認してください。例として、全く新しいワークシートを使用しています。
-
下の画像のように右クリックし、「"Office 2007 Custom UI Part"」をクリックします。これにより、"customUI.xml" が挿入されます。
-
次に、メニュー「挿入|サンプルXML|カスタムタブ」をクリックします。基本的なコードが自動的に生成されることに気づくでしょう。これで、要件に応じて編集するためのすべての準備が整いました。
-
コードを検証してみましょう
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ファイルをマクロ有効なファイルとして保存します。これで、スマイリーや太陽をクリックすると、関連するメッセージボックスが表示されます。
これが役に立つといいのですが!
関連
-
[解決済み】VBAの関数から結果を返す方法
-
[解決済み】VBAでフォルダー内のファイルをループ処理?
-
[解決済み】Excel VBAでSelectを使用しないようにする方法
-
[解決済み] Excelの日付から文字列への変換
-
[解決済み] Excel で範囲の各行をループする
-
[解決済み] 時間ではなく、時間DURATIONで仕事をする
-
[解決済み] While...Wendループからの脱却
-
[解決済み] VBAでFileSystemObjectを使用するにはどうしたらよいですか?
-
[解決済み] Microsoft ExcelのActiveXコントロールは無効ですか?
-
[解決済み] xlsmやxlsbはどのような場合に使用するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン