Freigeben über


Gewusst wie: Steuern von Makros mithilfe von Add-Ins

Das Macros-Objekt im Automatisierungsmodell von Visual Studio dient zur programmgesteuerten Steuerung von Makros, die in der integrierten Entwicklungsumgebung (Integrated Development Environment – IDE) aufgezeichnet wurden. Sie können damit folgende Aufgaben durchführen:

  • Die Makroaufzeichnung anhalten und fortsetzen.

  • Dem Makro, das aufgezeichnet wird, Codezeilen hinzufügen.

  • Bestimmen, ob die Makroaufzeichnung momentan ein Makro aufzeichnet.

Sie können außerdem mithilfe der ExecuteCommand-Methode direkt einen Befehl an die IDE ausgeben, z. B. den Befehl zum Erstellen einer neuen Datei.

Tipp

Die Macros-Objektmember sind nicht zur Verwendung innerhalb eines Makros bestimmt, sondern können nur innerhalb eines Add-Ins verwendet werden.

Im unten aufgeführten Visual Basic-Beispiel wird veranschaulicht, wie die verschiedenen Member des Automatisierungsmodells für Makros verwendet werden und wie auf sie verwiesen wird.

Tipp

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert. Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

Beispiel

Im folgenden Beispiel wird überprüft, ob gerade ein Makro aufgezeichnet wird. Wenn ja, wird dem Makro eine zusätzliche Codezeile hinzugefügt.

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);
    }
}

Wenn Sie ein Makro aufzeichnen und eine Textdatei öffnen, sieht der Makrocode folgendermaßen aus:

Public Module RecordingModule
    Sub TemporaryMacro()
        DTE.ItemOperations.NewFile("General\Text File")
    End Sub
End Module

Wenn Sie den Beispielcode ausführen und dieselbe Ausgabe ausführen, wird dem Makrocode eine zusätzliche Zeile hinzugefügt:

Public Module RecordingModule
    Sub TemporaryMacro()
        DTE.ItemOperations.NewFile("General\Text File")
        MsgBox("This line was added by code.")
    End Sub
End Module

Siehe auch

Aufgaben

Gewusst wie: Ändern des Erscheinungsbilds eines Fensters

Gewusst wie: Erstellen von Add-Ins

Exemplarische Vorgehensweise: Erstellen eines Assistenten

Konzepte

Automatisieren von wiederkehrenden Aktionen mit Makros

Diagramm "Automationsobjektmodell"

Weitere Ressourcen

Erstellen und Steuern von Umgebungsfenstern

Erstellen von Add-Ins und Assistenten

Referenz zur Automatisierung und Erweiterbarkeit