カスタム作業ウィンドウの追加について(ドキュメントレベル編)


今回は VSTO ならではのカスタム作業ウィンドウについて、ご紹介させていただきたいと思います。

既にいろいろな方が紹介されておりますが、まだまだ、認知度が低い部分もあるかとは思いますので、

あらためて、ご紹介いたします。

Office 2003 から、作業ウィンドウと呼ばれるものができて、ヘルプだとか Office の機能の一部を作業ウィンドウと呼ばれる部分に集約していました。

Office 2007 からは作業ウィンドウは基本的に無くなりました。

一部の機能については、作業ウィンドウが起動するようにになっていますが、通常はでてきません。

これから、ご紹介する作業ウィンドウは業務ニーズに応じたカスタマイズされた作業ウィンドウの利用です。

ちなみに以下の右側の赤枠の部分がカスタム作業ウィンドウです。

業務ニーズに応じた作りこみをしています。

ここは Windows フォームをベースにしているので、Windows フォームで利用できるコントロールはすべて利用可能です。

image

このカスタム作業ウィンドウの作り方の前に実はカスタム作業ウィンドウにも2種類あることをご説明いたします。

VSTO ソリューションにはドキュメントレベルとアプリケーションレベル(アドイン)開発が可能なことを以前、お伝えしたかと思います。

ドキュメントレベルのカスタム作業ウィンドウはアクションペインといいます。

また、アプリケーションレベルのカスタム作業ウィンドウはタスクペインといいます。

今回は、ドキュメントレベルのカスタム作業ウィンドウの作成手法について、ご紹介いたします。

 

まずは、以下の手順でプロジェクトを作成します。

1. [スタート]-[ファイル]-[新しいプロジェクト]-[Excelブック] で[OK]をクリックします。

image

2. [新規ドキュメントの作成]で [OK] をクリックします。

image

3. Excel ブックのソリューションが起動します。

image

ご覧のとおり、Visual Studio の開発環境で Excel のシートをデザイナとして、利用することが可能です。

4. [プロジェクト]-[ユーザーコントロールの追加]を選択します。

5.以下の[新しい項目の追加]のダイアログで[ユーザーコントロール]を選択し[OK]をクリックします。

image

6.ユーザーコントロールのデザイン画面が起動しますので、適当な大きさに広げます。

このユーザーコントロールがカスタム作業ウィンドウになります。

image

7.[ツールボックス]から、適当なコントロールを追加します。

ここでは、ボタンコントロールを追加してみます。

続いて、ボタンコントロールをクリックしたときのイベントから、コードを記述しますが、お好きなものを追加してみてください。

ここでは、メッセージボックスを出してみます。

 

8.このままでは、Excel 起動時にカスタム作業ウィンドウは表示されませんので、ワークブックのスタート時のイベントハンドリングを記述します。

[ソリューション エクスプローラー] から、[ThisWorkbook.vb] を右クリックし、[コードの表示]を選択します。

 

9.ThisWorkbook.vb のコードが表示されますので、Start_Up のハンドリングに以下を記載します。

Dim uc As New UserControl1
Globals.ThisWorkbook.ActionsPane.Controls.Add(uc)

このコードは WorkBook 起動時にアクションペインを起動するものです。

また、アクションペインの位置を調整する場合には以下のコードを記載します。

Globals.ThisWorkbook.Application.CommandBars("Task Pane").Position = Microsoft.Office.Core.MsoBarPosition.msoBarRight

この例では、右側にカスタム作業ウィンドウを表示するものです。

10. ここで、デバッグしてみます。

image

ボタンをクリックすると、以下のダイアログが表示されます。

image

前述しておりますが、このカスタム作業ウィンドウは Windows フォームと同様に利用することが可能です。

ですので、Office ドキュメントや Office の機能と WIndows フォームでできるロジックや機能を統合した利用が可能です。

次回はアプリケーションレベルのカスタム作業ウィンドウについて、ご紹介できればと思います。

 


Skip to main content