次の方法で共有


マクロ プロジェクトのオブジェクト モデル

Visual Studio には、マクロの記述および記録を行うためのツールが用意されています。 概要については、「マクロの使用による反復操作の自動化」を参照してください。また、Visual Studio には、マクロ プロジェクトを公開するプログラミング可能なオブジェクト モデルも用意されています。 このモデルには、言語に中立的なプロジェクト項目のための汎用拡張オブジェクトと、マクロ固有のオブジェクトの両方が含まれています。 VSLangProjVSLangProj2、および VSLangProj80 の各名前空間にあるマクロ固有のオブジェクトは、Visual Basic プロジェクトおよび Visual C# プロジェクトの場合と同様に使用されます。 ここでは、以下の内容について説明します。

  • マクロ プロジェクトの拡張オブジェクトへのアクセス

  • マクロ プロジェクト、VSProject オブジェクト、および VSProject2 オブジェクト

  • VSLangProjVSLangProj2、および VSLangProj80 の各オブジェクトのマクロ固有の要素

VSLangProjVSLangProj2、および VSLangProj80 の各オブジェクトの詳細については、「プロジェクト機能拡張の概要」を参照してください。 汎用機能拡張の詳細については、「Visual Studio 環境の拡張」を参照してください。

マクロ プロジェクトの拡張オブジェクトへのアクセス

マクロ プロジェクトには、DTE2 機能拡張オブジェクトの MacrosIDE プロパティを使用してアクセスします。 MacrosIDE プロパティは、DTE2 型のオブジェクトを返します。これにより、ソリューション、プロジェクト、ツール ウィンドウ、ドキュメント、イベントなどで構成されるマクロ統合開発環境 (IDE: Integrated Development Environment) にアクセスできるようになります。 マクロ プロジェクト内のすべてのモジュールを一覧表示するマクロを次に示します。

' Macro editor
Public Sub FindMacros()
   Dim macroproject As Project
   ' Retrieve the first project in the Macros IDE.
   macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)
   ' Display the project's name.
   MsgBox(macroproject.Name)
   ' Display each project item (module).
   Dim projitem As ProjectItem
   For Each projitem In macroproject.ProjectItems
      MsgBox(projitem.Name)
   Next
End Sub 

マクロ プロジェクトと VSLangProj オブジェクト

汎用機能拡張モデルでは、プロジェクトは汎用的な Project オブジェクトによって表されます。 Project オブジェクトには Object プロパティがあります。 マクロ プロジェクトでは、Object プロパティは VSProject 型のオブジェクトを返します。 Object プロパティは Object 型であるため、参照を VSProject 型にキャストする必要があります。 キャストを行う前に、PrjKind 列挙型または PrjKind2 列挙型を使用してプロジェクトの型を調べることもできます。 キャストをマクロで実行する場合は、次のようにマクロを記述できます。

' Macro editor
Public Sub CastToVSProject()
   ' Retrieve the general extensibility object.
   Dim macroproject As Project
   macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)

   ' Cast for the macro specific information.
   Dim vsproj As VSLangProj.VSProject

   ' Can test type of project before cast.
   If (macroproject.Kind = VSLangProj.PrjKind.prjKindVSAProject) Then
      vsproj = CType(macroproject.Object, VSLangProj.VSProject)
   End If
   MsgBox(vsproj.Project.Name)
End Sub

VSProject2 オブジェクトは、VSLangProjVSLangProj2、および VSLangProj80 の各名前空間にあるその他複数のオブジェクトのコンテナーです。このようなオブジェクトには、ReferencesReferenceImports、および BuildManager が含まれます。

汎用機能拡張モデルでは、プロジェクト項目は汎用の ProjectItem オブジェクトによって表されます。 ProjectItem オブジェクトには Object プロパティがあります。 マクロ プロジェクトでは、Object プロパティは VSProjectItem 型のオブジェクトを返します。 Object プロパティは Object 型であるため、参照を VSProjectItem 型にキャストする必要があります。 キャストをマクロで実行する場合は、次のようにマクロを記述できます。

' Macro editor
Public Sub CastToVSProjectItem()
   Dim projitem As ProjectItem
   Dim vsitem As VSLangProj.VSProjectItem
   For Each projitem In _
      DTE.MacrosIDE.Solution.Projects.Item(1).ProjectItems
      vsitem = CType(projitem.Object, VSLangProj.VSProjectItem)
      MsgBox(vsitem.ProjectItem.Name)
   Next
End Sub

VSLangProj オブジェクトのマクロ固有要素

VSLangProj 名前空間、VSLangProj2 名前空間、および VSLangProj80 名前空間のオブジェクトは、Visual Basic プロジェクト、Visual C# プロジェクト、およびマクロ プロジェクトで使用されます。 マクロ プロジェクト固有の列挙値もあります。 PrjKind 列挙型には、マクロ プロジェクト用の値として prjKindVSAProject が用意されています。 PrjBrowseObjectCATID 列挙型には、[プロパティ] ウィンドウの項目を拡張するために次の値があります。

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

VSLangProj オブジェクトのマクロ固有動作

VSLangProj オブジェクト、VSLangProj2 オブジェクト、および VSLangProj80 オブジェクトの動作は、Visual Basic プロジェクト、Visual C# プロジェクト、およびマクロ プロジェクトの間で少し異なります。 これは、オブジェクトがプロジェクトの種類を正確に表すようにするためです。 このオブジェクトのプロパティとメソッドには、次に示すように、マクロ プロジェクトをサポートしないものが多数あります。

VSProject   このオブジェクトは、プロジェクトのマクロ固有の詳細を表します。

  • BuildManager - このプロパティはサポートされていません。このプロパティにアクセスすると、例外がスローされます。

  • CopyProject - このメソッドはサポートされていません。このメソッドを呼び出すと、例外がスローされます。

  • WorkOffline - このプロパティは常に False を返します。 このプロパティを設定しようとしても例外はスローされませんが、True には設定できません。

VSProjectItem   このオブジェクトは、プロジェクト項目のマクロ固有の詳細を表します。

  • RunCustomTool - このメソッドはサポートされていません。このメソッドを呼び出すと、例外がスローされます。

ProjectProperties3   これらのプロパティでは、Visual Basic プロジェクト、Visual C# プロジェクト、およびマクロ プロジェクトを定義します。 サポートされていないプロパティを次に示します。

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2   これらのプロパティでは、Visual Basic プロジェクト項目、Visual C# プロジェクト項目、およびマクロ プロジェクト項目を定義します。 次のファイル プロパティはサポートされていません。これらのプロパティにアクセスすると、エラーが発生します。

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

次の FolderProperties2 はサポートされていません。これらのプロパティにアクセスすると、エラーが発生します。

FullPath

URL

LocalPath

 

ProjectConfigurationProperties3   これらのプロパティでは、Visual Basic 配置構成、Visual C# 配置構成、およびマクロ配置構成を定義します。 次のファイル プロパティはサポートされていません。これらのプロパティにアクセスすると、エラーが発生します。

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

Reference3   このオブジェクトは、1 つのプロジェクトの参照を表します。 次のプロパティはサポートされていません。このプロパティにアクセスすると例外がスローされます。

References   このオブジェクトは、マクロ プロジェクト内のすべての参照のコレクションを表します。 次のメソッドはサポートされていません。これらのメソッドのいずれかを呼び出すと、例外がスローされます。

AddActiveX

AddProject

参照

参照

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3

概念

プロジェクト機能拡張の概要