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
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.
Agregue una referencia a la biblioteca de objetos de Visio. Para ello, siga estos pasos:
- On the Project menu, click Add Reference.
- 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.
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í.
En el menú Ver, haga clic en Cuadro de herramientas. Agregue un botón a Form1.
Haga doble clic en Button1. La ventana de código se abre en el evento Click para Button1.
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
En el menú Proyecto, haga clic en Agregar módulo.
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.
En el menú Depurar, haga clic en Iniciar.
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):