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

  1. 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.

  2. Ajoutez une référence à la bibliothèque d’objets Visio. Pour cela, procédez comme suit :

    1. Dans le menu Projet, cliquez sur Ajouter une référence.
    2. 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.

  3. 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.

  4. Dans le menu Affichage, cliquez sur Boîte à outils. Ajoutez un bouton à Form1.

  5. Double-cliquez sur Button1. La fenêtre de code s’ouvre à l’événement Click pour Button1.

  6. 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
    
    
  7. Dans le menu Projet, cliquez sur Ajouter un module.

  8. 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.

  9. Dans le menu Déboguer, cliquez sur Démarrer.

  10. 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 :

Développement Microsoft Office avec Visual Studio