カスタム検索
Office関連

ユーザーフォームで疑似的にツールバーを再現する(Office 2007 VBA)

既存の機能を実行する(Office 2007 VBA)」で紹介した「ExecuteMso」メソッドを使用して、今回はユーザーフォームで疑似的に従来のツールバーを再現してみます。

 

1. ユーザーフォームを挿入し、「ShowModal」プロパティを「False」に設定します。

2. ScrollBarsプロパティ等必要に応じて設定します。
3. 1.で挿入したユーザーフォーム上にコマンドボタンを配置し、「Caption」プロパティを空白にします。

4. PicturePositionプロパティ等必要に応じて設定します。
5. UserFormのInitializeイベントに下記のようなコードを記述します。

Private Sub UserForm_Initialize()
  Const ICO_HEIGHT As Long = 16
  Const ICO_WIDTH As Long = 16
  
  Me.CommandButton1.Picture = Application.CommandBars.GetImageMso("FileNew", ICO_WIDTH, ICO_HEIGHT)
End Sub
※ 上記コード内で使用している「GetImageMso」メソッドの「FileNew」部分もExecuteMsoメソッドと同様にidMso値を入れてください。

6. コマンドボタンのClickイベントに下記のようなコードを記述します。
Private Sub CommandButton1_Click()
  Application.CommandBars.ExecuteMso ("FileNew")
End Sub

 

以上で作業は終了です。
以降、ユーザーフォーム上に配置したコマンドボタンから、任意のコマンドを実行できるようになります。


 

コマンドボタンを配置し、ExecuteMsoメソッドで実行したいコマンドを割り当てることで、疑似的に従来のツールバーを再現することができました。
今回はコマンドボタンのClickイベントにコードを入れることで処理しましたが、たくさんのコマンドボタンを配置して処理する場合には、クラスモジュールを活用すればもっとコードがすっきりします。