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
Conceptos
Automatizar acciones repetitivas mediante macros
Gráfico del modelo de objetos de automatización
Otros recursos
Crear y controlar las ventanas del entorno