「既存の機能を実行する(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
Private Sub CommandButton1_Click()
Application.CommandBars.ExecuteMso ("FileNew")
End Sub
以上で作業は終了です。
以降、ユーザーフォーム上に配置したコマンドボタンから、任意のコマンドを実行できるようになります。
コマンドボタンを配置し、ExecuteMsoメソッドで実行したいコマンドを割り当てることで、疑似的に従来のツールバーを再現することができました。
今回はコマンドボタンのClickイベントにコードを入れることで処理しましたが、たくさんのコマンドボタンを配置して処理する場合には、クラスモジュールを活用すればもっとコードがすっきりします。