Share via


Procedura: utilizzare componenti aggiuntivi per controllare le macro

Aggiornamento: novembre 2007

L'oggetto Macros nel modello di automazione di Visual Studio costituisce una misura di controllo a livello di codice delle macro registrate nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment). Mediante il suo utilizzo è possibile:

  • Sospendere o riprendere il registratore di macro.

  • Aggiungere una o più righe di codice alla macro registrata.

  • Determinare se il registratore di macro sta registrando una macro.

È inoltre possibile utilizzare il metodo ExecuteCommand per inviare direttamente un comando all'IDE, ad esempio un comando di creazione di un nuovo file.

Nota:

I membri dell'oggetto Macros non sono stati progettati per essere utilizzati all'interno di una macro, ma esclusivamente all'interno di un componente aggiuntivo.

Nell'esempio di Visual Basic riportato di seguito viene illustrato come fare riferimento ai diversi membri del modello di automazione delle macro e come utilizzarli.

Nota:

Le finestre di dialogo e i comandi di menu visualizzati potrebbero non corrispondere a quelli descritti nella Guida in linea in quanto dipendono dall'edizione o dalle impostazioni attive. Queste routine sono state sviluppate con le Impostazioni generali per lo sviluppo attive. Per modificare le impostazioni, scegliere Importa/EsportaImpostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Esempio

Nell'esempio riportato di seguito viene verificato se è attualmente in corso la registrazione di una macro. In caso affermativo, viene aggiunta una riga di codice supplementare alla macro.

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

Se fosse necessario registrare una macro e aprire un file di testo, il codice della macro sarebbe analogo a quello riportato di seguito:

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

Quando viene eseguito il codice di esempio e viene effettuata la stessa operazione, al codice della macro viene aggiunta una riga supplementare:

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

Vedere anche

Attività

Procedura: modificare le caratteristiche delle finestre

Procedura: creare un componente aggiuntivo

Procedura dettagliata: creazione di una procedura guidata

Concetti

Automazione di operazioni ripetitive tramite macro

Grafico del modello oggetto di automazione

Altre risorse

Creazione e controllo delle finestre di ambiente

Creazione di componenti aggiuntivi e di procedure guidate

Riferimenti su extensibility e automazione