Comment : utiliser des compléments pour contrôler des macros
L'objet Macros du modèle Automation de Visual Studio vous permet de contrôler par programmation les macros enregistrées dans l'environnement de développement intégré (IDE). À l'aide de cet objet, vous pouvez effectuer les opérations suivantes :
suspendre ou reprendre l'exécution de l'enregistreur de macros ;
ajouter une ou plusieurs lignes de code à la macro qui est enregistrée.
déterminer si l'enregistreur de macros est actuellement en train d'enregistrer une macro.
Vous pouvez également utiliser la méthode ExecuteCommand pour soumettre directement une commande à l'interface IDE, telle que la création d'un fichier.
Notes
Les membres de l'objet Macros ne sont pas conçus pour être utilisés à partir d'une macro. Ils ne doivent être utilisés qu'à partir d'un complément.
L'exemple Visual Basic suivant illustre la façon de référencer et d'utiliser les différents membres du modèle Automation Macros.
Notes
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importer et Exporter Paramètres dans le menu Outils. Pour plus d'informations, consultez Utilisation des paramètres.
Exemple
L'exemple suivant vérifie si une macro est ou non actuellement enregistrée. Dans l'affirmative, il lui ajoute une ligne de code supplémentaire.
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 vous deviez enregistrer une macro et ouvrir un fichier texte, le code de la macro ressemblerait à ce qui suit :
Public Module RecordingModule
Sub TemporaryMacro()
DTE.ItemOperations.NewFile("General\Text File")
End Sub
End Module
Lorsque vous exécutez l'exemple de code et effectuez ces mêmes opérations, une ligne supplémentaire est émise (ajoutée) dans le code de la macro :
Public Module RecordingModule
Sub TemporaryMacro()
DTE.ItemOperations.NewFile("General\Text File")
MsgBox("This line was added by code.")
End Sub
End Module
Voir aussi
Tâches
Comment : modifier les caractéristiques d'une fenêtre
Procédure pas à pas : création d'un Assistant
Concepts
Automatisation des actions répétitives à l'aide de macros
Graphique Modèle d'objet Automation
Autres ressources
Création et contrôle de fenêtres d'environnement