Automatización de Visio con Visual Basic .NET

Resumen

En este artículo se muestra cómo automatizar Visio mediante Visual Basic .NET.

Más información

El código de automatización de ejemplo de este artículo hace lo siguiente:

  • Dibuja un diagrama de flujo simple en la página de dibujo de Visio que se basa en los datos contenidos en una matriz.
  • Asigna un nombre a la página.
  • Guarda el documento.

La matriz es bidimensional: el primer elemento contiene el nombre de la forma y el segundo elemento contiene el texto de la forma.

Pasos para crear la aplicación .NET de Visual Basic de ejemplo

  1. Inicie Microsoft Visual Studio .NET. En el menú Archivo, haga clic en Nuevo y, a continuación, haga clic en Proyecto. En Tipos de proyecto, haga clic en Proyectos de Visual Basic y, a continuación, haga clic en Aplicación de Windows en Plantillas. Form1 se crea de forma predeterminada.

  2. Agregue una referencia a la biblioteca de objetos de Visio. Para ello, siga estos pasos:

    1. On the Project menu, click Add Reference.
    2. En la pestaña COM, haga clic en una de las opciones siguientes y haga clic en Seleccionar:
      • En Visio 2007, haga clic en Biblioteca de tipos de Microsoft Visio 12.0.
      • En Visio 2003, haga clic en Biblioteca de tipos de Microsoft Visio 11.0.
      • En Visio 2002, haga clic en Biblioteca de tipos de Microsoft Visio 2002.

    Nota Si aún no lo ha hecho, Microsoft recomienda descargar e instalar los ensamblados de interoperabilidad primarios (PIA) de Microsoft Office XP.

  3. Haga clic en Aceptar en el cuadro de diálogo Agregar referencias para aceptar las selecciones. Si recibe un mensaje para generar contenedores para las bibliotecas que seleccionó, haga clic en Sí.

  4. En el menú Ver, haga clic en Cuadro de herramientas. Agregue un botón a Form1.

  5. Haga doble clic en Button1. La ventana de código se abre en el evento Click para Button1.

  6. En la ventana de código, reemplace el código siguiente.

    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    End Sub
    
    

    con:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
          System.EventArgs) Handles Button1.Click
       fBuildArray()
       fBuildFlowchart()
    End Sub
    
    
  7. En el menú Proyecto, haga clic en Agregar módulo.

  8. Reemplace el contenido de Module1 por lo siguiente:

    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
    
    

    Nota Modifique la constante TEMPLATEPATH para que apunte a la carpeta de instalación de Visio. De forma predeterminada, la ubicación es una de las siguientes:

    • Para Office Visio 2007, la ubicación predeterminada es C:\Archivos de programa\Microsoft Office\Visio12\1033\BASFLO_U.VSS.

    • Para Visio 2003, la ubicación predeterminada para este archivo es C:\Archivos de programa\Microsoft Office\Visio11\1033\BASFLO_U.VSS

    • Para Visio 2002, la ubicación predeterminada de este archivo es C:\Archivos de programa\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss.

  9. En el menú Depurar, haga clic en Iniciar.

  10. Abra C:\Simpleflowchart.vsd en Visio para ver los resultados.

Referencias

Para obtener más información, vea el siguiente sitio web de Microsoft Developer Network (MSDN):

Desarrollo de Microsoft Office con Visual Studio