Como automatizar o Visio com o Visual Basic .NET

Resumo

Este artigo demonstra como automatizar o Visio através do Visual Basic .NET.

Mais Informações

O código de automatização de exemplo neste artigo faz o seguinte:

  • Desenha um fluxograma simples na página de desenho do Visio que se baseia em dados contidos numa matriz.
  • Damos um nome à página.
  • Guarda o documento.

A matriz é tridimensional: o primeiro elemento contém o nome da forma e o segundo elemento contém o texto da forma.

Passos para Criar a Aplicação .NET do Visual Basic de Exemplo

  1. Inicie o Microsoft Visual Studio .NET. No menu Ficheiro, clique em Novo e, em seguida, clique em Projeto. Em Tipos de projeto, clique em Projetos do Visual Basic e, em seguida, clique em Aplicação do Windows em Modelos. O formulário1 é criado por predefinição.

  2. Adicione uma referência à biblioteca de objetos do Visio. Para tal, siga estes passos:

    1. No menu Projeto, clique em Adicionar Referência.
    2. No separador COM, clique numa das seguintes opções e clique em Selecionar:
      • Para o Visio 2007, clique em Biblioteca de Tipos do Microsoft Visio 12.0.
      • Para o Visio 2003, clique em Biblioteca de Tipos do Microsoft Visio 11.0.
      • Para o Visio 2002, clique em Biblioteca de Tipos do Microsoft Visio 2002.

    Nota Se ainda não o tiver feito, a Microsoft recomenda que transfira e instale as Assemblagens de Interopção Primárias (PIAs) do Microsoft Office XP.

  3. Clique em OK na caixa de diálogo Adicionar Referências para aceitar as suas seleções. Se receber um pedido para gerar embrulhos para as bibliotecas que selecionou, clique em Sim.

  4. No menu Ver, clique em Caixa de Ferramentas. Adicionar um botão ao Formulário1.

  5. Faça duplo clique em Botão1. A janela de código é aberta no evento Click para o Botão1.

  6. Na janela do código, substitua o seguinte código

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

    com:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
          System.EventArgs) Handles Button1.Click
       fBuildArray()
       fBuildFlowchart()
    End Sub
    
    
  7. No menu Projeto, clique em Adicionar Módulo.

  8. Substitua os conteúdos do Módulo1 pelo seguinte:

    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 a constante TEMPLATEPATH para apontar para a sua pasta de instalação do Visio. Por predefinição, a localização é uma das seguintes:

    • Para o Office Visio 2007, a localização predefinida é C:\Program Files\Microsoft Office\Visio12\1033\BASFLO_U.VSS.

    • Para o Visio 2003, a localização predefinida para este ficheiro é C:\Program Files\Microsoft Office\Visio11\1033\BASFLO_U.VSS

    • Para o Visio 2002, a localização predefinida para este ficheiro é C:\Program Files\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (unidades dos EUA).vss.

  9. No menu Depurar, clique em Iniciar.

  10. Abra C:\Simpleflowchart.vsd no Visio para ver os resultados.

Referências

Para obter mais informações, consulte o seguinte site do Microsoft Developer Network (MSDN):

Desenvolvimento do Microsoft Office com Visual Studio