方法 : アドインを使用してマクロを制御する
更新 : 2007 年 11 月
Visual Studio オートメーション モデルの Macros オブジェクトにより、統合開発環境 (IDE: Integrated Development Environment) で記録中のマクロをプログラムで制御できます。Macros オブジェクトを使用すると、次の操作を行うことができます。
マクロ レコーダーを一時停止または再開します。
記録中のマクロに 1 行以上のコードを追加します。
マクロ レコーダーが現在マクロを記録しているかどうかを確認します。
また、ExecuteCommand メソッドを使用して、新規ファイルの作成など、IDE に対して直接コマンドを実行することもできます。
メモ : |
---|
Macros オブジェクトのメンバは、マクロ内で使用するようにデザインされていないため、アドイン内でのみ使用する必要があります。 |
次の Visual Basic の例は、Macros オートメーション モデルのさまざまなメンバを参照および使用する方法を示しています。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
使用例
マクロが現在記録中であるかどうかをチェックする例を次に示します。マクロが記録中である場合、1 行のコードがマクロに追加されます。
Public Sub OnConnection(ByVal application As Object, _
ByVal connectMode As ext_ConnectMode, ByVal addInInst _
As Object, ByRef custom As Array) Implements _
IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
macroTest(_applicationObject)
End Sub
Public Sub macroTest(ByVal dte As DTE2)
Try
Dim objMac As Macros = dte.Macros
' Determine if a macro is recording. If it is,
' add a line of code to it and then let it resume
' recording.
If objMac.IsRecording = True Then
objMac.EmitMacroCode _
("MsgBox(""This was added by code."")")
Else
MsgBox("Macro is not recording.")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
public void OnConnection(object application, ext_ConnectMode
connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
macroTest(_applicationObject);
}
public void macroTest(DTE2 dte)
{
try
{
Macros objMac = dte.Macros;
// Determine if a macro is recording. If it is,
// add a line of code to it and then let it resume
// recording.
if (objMac.IsRecording == true)
{
objMac.EmitMacroCode("MsgBox(\"This was added by
code.\")");
}
else
{
System.Windows.Forms.MessageBox.Show("Macro is not
recording.");
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
マクロを記録して、テキスト ファイルを開いた場合、マクロ コードは次のようになります。
Public Module RecordingModule
Sub TemporaryMacro()
DTE.ItemOperations.NewFile("General\Text File")
End Sub
End Module
このプログラム例を実行し、同じ操作を行うと、マクロ コードにコードが 1 行出力 (追加) されます。
Public Module RecordingModule
Sub TemporaryMacro()
DTE.ItemOperations.NewFile("General\Text File")
MsgBox("This line was added by code.")
End Sub
End Module