特集
.NET言語による次世代Officeソリューションの開発

3. VSTOソリューションの開発

デジタルアドバンテージ 一色 政彦
2003/12/17

Page1 Page2 Page3 Page4

 それでは、VSTOのインストールについて触れておこう。

VSTOインストールの注意点

 VSTOは、「Office 2003」用のアドイン・ソリューションを「VS.NET」で開発するためのツールなので、前提条件としてOffice 2003とVS.NETの2つのアプリケーションを事前にインストールしておく必要がある。また、この2つのアプリケーションにもインストールの順序がある。必ず、Office 2003をインストールする前にVS.NETをインストールしなければならない。なぜなら、Office 2003のPIAは.NET Framework 1.1のグローバル・アセンブリ・キャッシュ(GAC:Global Assembly Cache)にインストールされるからだ。なお、.NET Framework 1.1はVS.NETに含まれている。よって、最終的なインストール順序は次のようになる。

  1. Microsoft Visual Studio .NET 2003のインストール
  2. Microsoft Office 2003のインストール(インストール時のオプションで「.NETプログラミング サポート」を指定する必要がある)
  3. Visual Studio Tools for Officeのインストール

 なお、このインストール順はVSTOでの開発を行う場合の順序である。ソリューションの展開の場合のインストールについては、「@IT:Office 2003で変わる業務アプリケーション−4.Office 2003 業務アプリケーションの展開」を参照していただきたい。

VSTOプロジェクト・テンプレートとMSDNヘルプ

 以上のインストールが終われば、冒頭で述べたVSTOのプロジェクト・テンプレートがVS.NETで作成される。

 VSTOのヘルプについては、2003年10月版またはそれ以降のMSDNの[.NET開発]−[Visual Studio .NET]−[Visual BasicとVisual C#]−[Programming with Office]を参照するか、またはWeb上の「Programming with Office」を参照していただきたい。なお、MSDNを2003年10月版へアップデートするには、Web上の「Microsoftダウンロード:Oct 2003 VS .NET Doc Update」から行うことができる。

 それでは、VSTOの環境がそろったので、早速「Excel ワークブック」のVSTOソリューションを作成してみよう。

VSTOソリューションの作成

 VSTOソリューションの作成は簡単だ。プロジェクト・テンプレートを実行して、そこで表示される「Microsoft Office プロジェクト ウィザード」に沿って設定を入力するだけだ。基本的にはデフォルトのままで設定を変更する必要もないだろう。

Microsoft Office プロジェクト ウィザード:ドキュメントの設定
Excelワークブックのプロジェクト・テンプレートを実行すると表示されるダイアログ。ドキュメント(Excelワークブック)を新たに作成するか、名前を何にするか、どこに作成するかなどの情報を設定する。
 
Microsoft Office プロジェクト ウィザード:セキュリティ設定
Excelワークブックのプロジェクト・テンプレートを実行して表示されるダイアログで、[セキュリティ設定]タブを開いたところ。今回のVSTOプロジェクト・ウィザードで作成する.NETアセンブリに対して、.NET Framework 1.1のコード・アクセス・セキュリティ(以降、CAS)の設定も同時に作成するかどうかを設定する。CASの設定を作成しない場合、セキュリティ制限のためVSTOソリューションを実行できない。この場合には後で手動によりCASの設定を作成する必要がある。

VSTOプロジェクト・ウィザードが生成するコード

 このウィザードを実行すると、次のようなコードが生成される。

Imports System.Windows.Forms
Imports Office = Microsoft.Office.Core
Imports Excel = Microsoft.Office.Interop.Excel
Imports MSForms = Microsoft.Vbe.Interop.Forms

' Office 統合属性です。ワークブックのスタートアップ クラスを識別します。変更しないでください。
<Assembly: System.ComponentModel.DescriptionAttribute("OfficeStartupClass, Version=1.0, Class=ExcelProject1.OfficeCodeBehind")>

Public Class OfficeCodeBehind

  Friend WithEvents ThisWorkbook As Excel.Workbook
  Friend WithEvents ThisApplication As Excel.Application

#Region "生成された初期化コード"

  ' 既定のコンストラクタです。
  Public Sub New()
  End Sub

  ' 必要なプロシージャです。変更しないでください。
  Public Sub _Startup(ByVal application As Object, ByVal workbook As Object)
    ThisApplication = CType(application, Excel.Application)
    ThisWorkbook = CType(workbook, Excel.Workbook)
  End Sub

  ' 必要なプロシージャです。変更しないでください。
  Public Sub _Shutdown()
    ThisApplication = Nothing
    ThisWorkbook = Nothing
  End Sub

  ' ThisWorkbook のアクティブなワークシートに指定された名前のコントロールを返します。
  Overloads Function FindControl(ByVal name As String) As Object
    Return FindControl(name, CType(ThisWorkbook.ActiveSheet, Excel.Worksheet))
  End Function

  ' 指定されたワークシートに指定された名前のコントロールを返します。
  Overloads Function FindControl(ByVal name As String, ByVal sheet As Excel.Worksheet) As Object
    Dim theObject As Excel.OLEObject
    Try
      theObject = CType(sheet.OLEObjects(name), Excel.OLEObject)
      Return theObject.Object
    Catch Ex As Exception
    ' コントロールが見つからない場合 Nothing を返します。
    End Try
    Return Nothing
  End Function
#End Region

  ' ワークブックが開かれたときに呼び出されます。
  Private Sub ThisWorkbook_Open() Handles ThisWorkbook.Open

  End Sub

  ' ワークブックが閉じられる前に呼び出されます。このメソッドは
  ' 複数回呼び出されることがあり、Cancel に割り当てられた値は、
  ' ほかのコードやユーザーが介入した場合には無視される可能性があります。
  ' Cancel は、イベントが発生したときに False を返します。イベント プロシージャによって
  ' True に設定された場合、プロシージャが実行されたときにドキュメントは閉じられません。

  Private Sub ThisWorkbook_BeforeClose(ByRef Cancel As Boolean) Handles ThisWorkbook.BeforeClose
    Cancel = False
  End Sub

End Class
プロジェクト・ウィザードのコード(VB.NET版(ThisWorkbook.vb)C#版(ThisWorkbook.cs

 では、このコードの内容について解説していこう。


 INDEX
  [特集].NET言語による次世代Officeソリューションの開発
     1.VSTOソリューションとは
     2.VSTOソリューションのメリットと実行の仕組み
   3.VSTOソリューションの開発
     4.VSTOのコードとプログラミング

 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間