次の方法で共有


チュートリアル : Visual Studio プロジェクト オートメーションを使用した新しい Office プロジェクトの作成

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

このチュートリアルでは、Visual Studio オブジェクト モデルを使用して Visual Studio Tools for Office プロジェクトの作成を自動化するマクロの作成方法を説明します。このプロジェクトでは、プロジェクトの既定値を使用する代わりに、Visual Studio Tools for Office プロジェクト ウィザードでカスタムの設定を使用します。

コードでは、自動化されたプロジェクトの作成時にブックが新規作成されるのではなく既存の Microsoft Office Excel ブックが使用されるようにするために、カスタムのウィザード設定で新しいプロジェクトを作成します。

マクロの詳細については、「マクロの使用による反復操作の自動化」を参照してください。

このチュートリアルでは、次のタスクについて説明します。

  • 新しい Visual Studio マクロを作成する。

  • 一時テンプレート ファイル (.vstemplate) をカスタム設定で作成する。

  • ウィザードのパラメータを設定し、ウィザードを起動する。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Excel 2003

Excel ブックの作成

新しいプロジェクトで既存の Excel ブックとして使用するブックを作成する必要があります。

Excel ブックを作成するには

  1. コンピュータの C ドライブに CreateNewFile というフォルダを作成します。

  2. CreateNewFile フォルダに Test というサブフォルダを作成します (C:\CreateNewFile\Test)。

  3. Microsoft Office Excel 2003 を開きます。

  4. セル A1 に「This is the CreateNewFile workbook」と入力します。

  5. ブックを CreateNewFile.xls という名前で C:\CreateNewFile に保存します。

  6. Excel を終了します。

Test サブフォルダは、完成したプロジェクトの格納先として使用します。

新しいマクロの作成

ここでは、空の新しい Visual Studio マクロを作成します。

新しいマクロを作成するには

  1. Visual Studio を起動し、開いていたすべてのプロジェクトを閉じます。

  2. [ツール] メニューの [マクロ] をポイントし、[マクロ IDE] をクリックします。

    Microsoft Visual Studio Macros 統合開発環境 (IDE: Integrated Development Environment) が開きます。

  3. [MyMacros] ノードが展開されていない場合は、このノードを展開します。

  4. [プロジェクト] メニューの [モジュールの追加] をクリックします。

  5. モジュールに CreateNewProject という名前を付け、[追加] をクリックします。

新しいモジュールが Macros IDE で開きます。これで、新しいプロジェクトを作成するコードを追加できます。

テンプレート ファイル (.vstemplate) の作成

既定のウィザード設定を使用して新しいプロジェクトを作成するには、定義済みテンプレート ファイルの 1 つを使用します。Visual Studio Tools for Office では、プロジェクトで使用する新しい文書またはブックが既定で作成されます。プロジェクトにある既存のブックを使用するには、カスタムの一時ファイルである .vstemplate を適切な設定で作成する必要があります。

.vstemplate ファイルの詳細については、「Visual Studio テンプレート」を参照してください。

既存の文書を使用するには、カスタムのパラメータ VSTOExistingDocumentPath を .vstemplate ファイルに追加します。

一時 .vsz ファイルを作成するには

  1. [プロジェクト] メニューの [参照の追加] をクリックします。

  2. [System.XML.dll] を選択し、[追加] をクリックして、[OK] をクリックします。

  3. 次の Imports ステートメントをコード ファイルの先頭に追加します。

    Imports System.Xml
    Imports System.IO
    
  4. CreateNewProject モジュールで、一時テンプレート フォルダの内容を定義する次のメソッドを追加します。

    Sub CreateVstemplateFile(ByVal defaultTemplateFilePath As String, _
        ByVal templateFilePath As String, ByVal docFilePath As String)
    
        ' Copy the default template in the temporary location.
        Dim defaultTemplateDirectory = _
            Path.GetDirectoryName(defaultTemplateFilePath)
        Dim templateDirectory = Path.GetDirectoryName(templateFilePath)
        If Not Directory.Exists(templateDirectory) Then
            Directory.CreateDirectory(templateDirectory)
        End If
        For Each fileToCopy As String In Directory. _
            GetFiles(defaultTemplateDirectory)
            File.Copy(fileToCopy, Path.Combine(templateDirectory, _
                Path.GetFileName(fileToCopy)), True)
        Next
    
        ' Create the vstemplate namespace.
        Dim vstemplateNamespace As String = _
            "https://schemas.microsoft.com/developer/vstemplate/2005"
    
        ' Load the XML document.
        Dim doc As XmlDocument = New XmlDocument()
        doc.Load(templateFilePath)
        Dim xmlNsManager As XmlNamespaceManager = _
            New XmlNamespaceManager(doc.NameTable)
        xmlNsManager.AddNamespace("vstemplns", vstemplateNamespace)
    
        ' Get 'CustomParameters' XML node.
        Dim customParametersNode As XmlNode = doc.SelectSingleNode( _
            "/vstemplns:VSTemplate/vstemplns:TemplateContent/" _
            & "vstemplns:CustomParameters", xmlNsManager)
    
        ' Create a new XML CustomParameter node with 
        ' the existing document data.
        ' <CustomParameter Name="VSTOExistingDocumentPath" _
        ' Value="C:\CreateNewFile\CreateNewFile.xls" />
        Dim newNode As XmlNode
        newNode = doc.CreateElement("CustomParameter", _
            vstemplateNamespace)
        Dim nameAttribute As XmlAttribute
        nameAttribute = doc.CreateAttribute("Name")
        Dim valueAttribute As XmlAttribute
        valueAttribute = doc.CreateAttribute("Value")
    
        nameAttribute.Value = "VSTOExistingDocumentPath"
        valueAttribute.Value = docFilePath
    
        newNode.Attributes.Append(nameAttribute)
        newNode.Attributes.Append(valueAttribute)
    
        customParametersNode.AppendChild(newNode)
        doc.Save(templateFilePath)
    End Sub
    

次のメソッドでは、パラメータを定義し、LaunchWizard メソッドを呼び出します。

ウィザードの起動

新しいプロジェクトを作成するには、DTE オブジェクトの LaunchWizard メソッドを使用します。

ウィザードを起動するには

  • 次のメソッドを CreateNewProject モジュールに追加して、パラメータ配列に値を設定し、ウィザードを起動します。

    Sub LaunchWizard(ByVal projectName As String, _
        ByVal projectFolder As String, _
        ByVal templateFilePath As String)
    
        Dim params(6) As Object
    
        ' New project.
        params(0) = "{0F90E1D0-4999-11D1-B6D1-00A0C90F2744}"
    
        ' Project name.
        params(1) = projectName
    
        ' Project location.
        params(2) = projectFolder
    
        ' Install location.
        params(3) = ""
    
        ' Close solution.
        params(4) = False
    
        ' Solution name.
        params(5) = ""
    
        ' Silent - do not display any user interface.
        params(6) = False
    
        DTE.LaunchWizard(templateFilePath, params)
    End Sub
    

最後に、ここで作成した 2 つのメソッドを呼び出して、適切なパラメータを渡すメソッドを追加します。

プロジェクトの作成

次のメソッドは、適切なパラメータを定義して CreateVstemplateFile メソッドと LaunchWizard メソッドに渡します。

プロジェクトを作成するには

  1. CreateNewProject モジュールに次のメソッドを追加します。

    Sub CreateProject()
        Dim sol As Solution2 = DTE.Solution
    
        ' Get the path of the default .vstemplate file using 
        ' the name of the template zip file and the language.
        ' The zip files are "VSTOExcelWorkbook.zip", 
        ' "VSTOExcelTemplate.zip", ' "VSTOWordDocument.zip", 
        ' or "VSTOWordTemplate.zip".
        ' The languages are "VisualBasic" and "CSharp".
        Dim defaultTemplateFilePath As String = _
            sol.GetProjectTemplate("VSTOExcel2003Workbook.zip", _
            "VisualBasic")
    
        ' Get the temporary .vstemplate file containing 
        ' the specification.
        Dim templateDirectory As String = "C:\CreateNewFile\template"
        Dim templateFilePath = Path.Combine(templateDirectory, _
            Path.GetFileName(defaultTemplateFilePath))
    
        ' Get an existing document to use in project creation.
        Dim docFilePath As String = "C:\CreateNewFile\CreateNewFile.xls"
    
        ' Create a temporary template with the wizard specification.
        CreateVstemplateFile(defaultTemplateFilePath, _
            templateFilePath, docFilePath)
    
        ' Launch the CreateProject wizard.
        Dim projectName As String = "CreateNewFile"
        Dim projectFolder As String = "c:\CreateNewFile\test"
        LaunchWizard(projectName, projectFolder, templateFilePath)
    End Sub
    
  2. マクロを保存します。

  3. Macros IDE を閉じます。

マクロのテスト

マクロをテストして、新しいプロジェクトが作成されることを確認できます。

マクロをテストするには

  1. [ツール] メニューの [マクロ] をポイントし、[マクロ エクスプローラ] をクリックします。

  2. マクロ エクスプローラ[MyMacros] で、[CreateNewProject] マクロを展開します。

  3. [CreateNewProject][CreateProject] をダブルクリックします。

    Visual Studio Tools for Office プロジェクト ウィザードが開きます。

  4. [アプリケーションのドキュメントを選択する] ページで、[OK] をクリックします。

  5. 新しいプロジェクトが Test サブフォルダに作成されることを確認します。

参照

処理手順

方法 : Visual Studio プロジェクト オートメーションを使用してブックにワークシートを追加する

方法 : Visual Studio プロジェクト オートメーションを使用して Excel のプロパティを変更する

概念

Visual Studio Tools for Office のプロジェクト機能拡張の概要

Visual Basic および Visual C# の各プロジェクト機能拡張の例

その他の技術情報

Visual Studio Tools for Office におけるプロジェクト機能拡張