チュートリアル : Visual Studio プロジェクト オートメーションを使用した新しい Office プロジェクトの作成
このチュートリアルでは、Visual Studio オブジェクト モデルを使用して Office プロジェクトの作成を自動化するマクロの作成方法を説明します。 このプロジェクトでは、プロジェクトの既定値を使用する代わりに、Visual Studio Tools for Office プロジェクト ウィザードでカスタムの設定を使用します。
対象: このトピックの情報は、Excel 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
コードでは、自動化されたプロジェクトの作成時にブックが新規作成されるのではなく既存の Microsoft Office Excel ブックが使用されるようにするために、カスタムのウィザード設定で新しいプロジェクトを作成します。
マクロの詳細については、「マクロの使用による反復操作の自動化」を参照してください。
このチュートリアルでは、次の作業について説明します。
新しい Visual Studio マクロを作成する。
一時テンプレート ファイル (.vstemplate) をカスタム設定で作成する。
ウィザードのパラメーターを設定し、ウィザードを起動する。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
- Excel 2010.
Excel ブックの作成
新しいプロジェクトで既存の Excel ブックとして使用するブックを作成する必要があります。
Excel ブックを作成するには
コンピューターの C ドライブに CreateNewFile というフォルダーを作成します。
CreateNewFile フォルダーに Test というサブフォルダーを作成します (C:\CreateNewFile\Test)。
Excel 2010 を開きます。
セル A1 に「This is the CreateNewFile workbook」と入力します。
ブックを CreateNewFile.xls という名前で C:\CreateNewFile に保存します。
Excel を終了します。
Test サブフォルダーは、完成したプロジェクトの格納先として使用します。
新しいマクロの作成
ここでは、空の新しい Visual Studio マクロを作成します。
新しいマクロを作成するには
Visual Studio を起動し、開いていたすべてのプロジェクトを閉じます。
[ツール] メニューの [マクロ] をポイントし、[マクロ IDE] をクリックします。
Microsoft Visual Studio Macros 統合開発環境 (IDE: Integrated Development Environment) が開きます。
[MyMacros] ノードが展開されていない場合は、このノードを展開します。
[プロジェクト] メニューの [モジュールの追加] をクリックします。
モジュールに CreateNewProject という名前を付け、[追加] をクリックします。
新しいモジュールが Macros IDE で開きます。 これで、新しいプロジェクトを作成するコードを追加できます。
テンプレート ファイル (.vstemplate) の作成
既定のウィザード設定を使用して新しいプロジェクトを作成するには、定義済みテンプレート ファイルの 1 つを使用します。 Visual Studio では、プロジェクトの既定の動作として、プロジェクトで使用する新しい文書またはブックが作成されます。 プロジェクトにある既存のブックを使用するには、カスタムの一時ファイルである .vstemplate を適切な設定で作成する必要があります。
.vstemplate ファイルの詳細については、「Visual Studio テンプレート」を参照してください。
既存の文書を使用するには、カスタムのパラメーター VSTOExistingDocumentPath を .vstemplate ファイルに追加します。
一時 .vsz ファイルを作成するには
[プロジェクト] メニューの [参照の追加] をクリックします。
[System.XML.dll] を選択し、[追加] をクリックして、[OK] をクリックします。
次の Imports ステートメントをコード ファイルの先頭に追加します。
Imports System.Xml Imports System.IO
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 メソッドに渡します。
プロジェクトを作成するには
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("VSTOExcel2010WorkbookV4.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
マクロを保存します。
Macros IDE を閉じます。
マクロのテスト
マクロをテストして、新しいプロジェクトが作成されることを確認できます。
マクロをテストするには
[ツール] メニューの [マクロ] をポイントし、[マクロ エクスプローラー] をクリックします。
マクロ エクスプローラーの [MyMacros] で、[CreateNewProject] マクロを展開します。
[CreateNewProject] の [CreateProject] をダブルクリックします。
Visual Studio Tools for Office プロジェクト ウィザードが開きます。
[アプリケーションのドキュメントを選択する] ページで、[OK] をクリックします。
新しいプロジェクトが Test サブフォルダーに作成されることを確認します。
参照
処理手順
方法 : Visual Studio プロジェクト オートメーションを使用してブックにワークシートを追加する
方法 : Visual Studio プロジェクト オートメーションを使用して Excel のプロパティを変更する