Comment automatiser Visio avec Visual Basic .NET
Résumé
Cet article montre comment automatiser Visio à l’aide de Visual Basic .NET.
Informations supplémentaires
L’exemple de code Automation de cet article effectue les opérations suivantes :
- Dessine un organigramme simple sur la page de dessin Visio qui est basé sur les données contenues dans un tableau.
- Nomme la page.
- Enregistre le document.
Le tableau est bidimensionnel : le premier élément contient le nom de la forme, et le deuxième élément contient le texte de la forme.
Étapes de création de l’exemple d’application .NET Visual Basic
Démarrez Microsoft Visual Studio .NET. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet. Sous Types de projets, cliquez sur Projets Visual Basic, puis sur Application Windows sous Modèles. Form1 est créé par défaut.
Ajoutez une référence à la bibliothèque d’objets Visio. Pour cela, procédez comme suit :
- Dans le menu Projet, cliquez sur Ajouter une référence.
- Sous l’onglet COM, cliquez sur l’une des options suivantes, puis sur Sélectionner :
- Pour Visio 2007, cliquez sur Bibliothèque de types Microsoft Visio 12.0.
- Pour Visio 2003, cliquez sur Bibliothèque de types Microsoft Visio 11.0.
- Pour Visio 2002, cliquez sur Bibliothèque de types Microsoft Visio 2002.
Note Si vous ne l’avez pas déjà fait, Microsoft vous recommande de télécharger et d’installer les assemblys d’interopérabilité principale (PIA) Microsoft Office XP.
Cliquez sur OK dans la boîte de dialogue Ajouter des références pour accepter vos sélections. Si vous recevez une invite pour générer des wrappers pour les bibliothèques que vous avez sélectionnées, cliquez sur Oui.
Dans le menu Affichage, cliquez sur Boîte à outils. Ajoutez un bouton à Form1.
Double-cliquez sur Button1. La fenêtre de code s’ouvre à l’événement Click pour Button1.
Dans la fenêtre de code, remplacez le code suivant
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
avec :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click fBuildArray() fBuildFlowchart() End Sub
Dans le menu Projet, cliquez sur Ajouter un module.
Remplacez le contenu de Module1 par ce qui suit :
Module Module1 Public aryValues(5, 2) As String Sub fBuildArray() aryValues(0, 0) = "Terminator" aryValues(1, 0) = "Document" aryValues(2, 0) = "Decision" aryValues(3, 0) = "Process" aryValues(4, 0) = "Terminator" aryValues(0, 1) = "Begin Routing Process" aryValues(1, 1) = "Gather Customer Data" aryValues(2, 1) = "Supported Issue?" aryValues(3, 1) = "Dispatch to Queue" aryValues(4, 1) = "End Routing Process" End Sub Sub fBuildFlowchart() Dim vApp As Visio.Application Dim vDoc As Visio.Document Dim vFromShape As Visio.Shape Dim vToShape As Visio.Shape Dim vConnector As Visio.Shape Dim vFlowChartMaster As Visio.Master Dim vConnectorMaster As Visio.Master Dim vStencil As Visio.Document Dim dblXLocation As Double Dim dblYLocation As Double Dim vBeginCell As Visio.Cell Dim vEndCell As Visio.Cell Dim iCount As Integer Const TEMPLATEPATH = "C:\Program Files\Microsoft Office\Visio10\1033\" _ & "Solutions\Flowchart\Basic Flowchart Shapes (US units).vss" ' Change this constant to match your choice of location and file name. Const SAVENEWFILE = "C:\Simpleflowchart.vsd" ' Start point measured from the bottom left corner. dblXLocation = 4.25 dblYLocation = 8.5 vApp = New Visio.Application() 'Create a new document; note the empty string. vDoc = vApp.Documents.Add("") vStencil = vApp.Documents.OpenEx(TEMPLATEPATH, 4) For iCount = LBound(aryValues) To UBound(aryValues) - 1 vFlowChartMaster = vStencil.Masters(aryValues(iCount, 0)) vToShape = vApp.ActivePage.Drop(vFlowChartMaster, _ dblXLocation, dblYLocation) vToShape.Text = aryValues(iCount, 1) If Not vFromShape Is Nothing Then If vConnectorMaster Is Nothing Then vConnectorMaster = vStencil.Masters("Dynamic Connector") End If vConnector = vApp.ActivePage.Drop(vConnectorMaster, 0, 0) vBeginCell = vConnector.Cells("BeginX") vBeginCell.GlueTo(vFromShape.Cells("AlignBottom")) vEndCell = vConnector.Cells("EndX") vEndCell.GlueTo(vToShape.Cells("AlignTop")) vConnector.SendToBack() End If vFromShape = vToShape vToShape = Nothing dblYLocation = dblYLocation - 1.5 Next vDoc.Pages(1).Name = "Flowchart Example" Try ' Delete the previous version of the file. Kill(SAVENEWFILE) Catch End Try vDoc.SaveAs(SAVENEWFILE) vDoc.Close() vApp.Quit() vDoc = Nothing vApp = Nothing GC.Collect() End Sub End Module
Note Modifiez la constante TEMPLATEPATH pour pointer vers votre dossier d’installation Visio. Par défaut, l’emplacement est l’un des suivants :
Pour Office Visio 2007, l’emplacement par défaut est C:\Program Files\Microsoft Office\Visio12\1033\BASFLO_U.VSS.
Pour Visio 2003, l’emplacement par défaut de ce fichier est C:\Program Files\Microsoft Office\Visio11\1033\BASFLO_U.VSS
Pour Visio 2002, l’emplacement par défaut de ce fichier est C:\Program Files\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss.
Dans le menu Déboguer, cliquez sur Démarrer.
Ouvrez C:\Simpleflowchart.vsd dans Visio pour afficher les résultats.
References
Pour plus d’informations, consultez le site web Microsoft Developer Network (MSDN) suivant :