Comment : utiliser des compléments pour contrôler des macros
Mise à jour : novembre 2007
L'objet Macros du modèle Automation de Visual Studio vous donne un moyen de contrôler par programme 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.
Remarque : |
---|
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.
Remarque : |
---|
Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. 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 ExporterParamètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio. |
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