Compartir a través de


Cómo: Utilizar complementos para controlar Macros

Actualización: noviembre 2007

El objeto Macros del modelo de automatización de Visual Studio proporciona un grado de control de programación sobre las macros que se graban en el entorno de desarrollo integrado (IDE). Mediante su uso, puede:

  • Interrumpir y reanudar la grabadora de macros.

  • Agregar una o más líneas de código a la macro que se graba.

  • Determinar si la grabadora de macros está grabando actualmente.

También se puede utilizar el método ExecuteCommand para ejecutar directamente un comando en el IDE, como por ejemplo crear un archivo nuevo.

Nota:

Los miembros del objeto Macros no están diseñados utilizarse en una macro; se deben usar únicamente en complementos.

El siguiente ejemplo de Visual Basic muestra cómo hacer referencia y utilizar los diversos miembros del modelo de automatización de macros.

Nota:

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de la configuración activa o la edición. Estos procedimientos se desarrollaron con la Configuración general de desarrollo activa. Para cambiar la configuración, elija la opción Importar y exportarconfiguraciones del menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Ejemplo

En el ejemplo siguiente se comprueba si actualmente se está grabando una macro. Si es así, se le agrega una línea adicional de código.

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

Si desea grabar una macro y abrir un archivo de texto, éste sería el aspecto del código de macro:

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

Cuando se ejecuta el código de ejemplo y se lleva a cabo la misma acción, se emite (se agrega) una línea adicional al código de macro:

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

Vea también

Tareas

Cómo: Cambiar las características de las ventanas

Cómo: Crear un complemento

Tutorial: Crear un asistente

Conceptos

Automatizar acciones repetitivas mediante macros

Gráfico del modelo de objetos de automatización

Otros recursos

Crear y controlar las ventanas del entorno

Crear complementos y asistentes

Referencia de automatización y extensibilidad