Автоматизация Visio с помощью Visual Basic .NET

Аннотация

В этой статье показано, как автоматизировать Visio с помощью Visual Basic .NET.

Дополнительная информация

Пример кода автоматизации в этой статье выполняет следующие действия:

  • Рисует простую блок-схему на странице документа Visio на основе данных, содержащихся в массиве.
  • Имя страницы.
  • Сохраняет документ.

Массив является двумерным: первый элемент содержит имя фигуры, а второй элемент содержит текст фигуры.

Действия по созданию примера приложения Visual Basic .NET

  1. Запустите Microsoft Visual Studio .NET. В меню "Файл" нажмите кнопку "Создать" и выберите пункт "Проект". В разделе "Типы проектов" щелкните "Проекты Visual Basic", а затем "Приложение Windows" в разделе "Шаблоны". Form1 создается по умолчанию.

  2. Добавьте ссылку на библиотеку объектов Visio. Для этого выполните следующие действия:

    1. On the Project menu, click Add Reference.
    2. На вкладке COM выберите один из следующих параметров и нажмите кнопку "Выбрать":
      • Для Visio 2007 щелкните библиотеку типов Microsoft Visio 12.0.
      • Для Visio 2003 щелкните библиотеку типов Microsoft Visio 11.0.
      • Для Visio 2002 щелкните библиотеку типов Microsoft Visio 2002.

    Примечание Если вы еще не сделали этого, корпорация Майкрософт рекомендует скачать и установить основные сборки взаимодействия Microsoft Office XP.

  3. Нажмите кнопку "ОК" в диалоговом окне "Добавление ссылок", чтобы принять выбранные параметры. Если появится запрос на создание оболок для выбранных библиотек, нажмите кнопку "Да".

  4. В меню "Вид" щелкните "Панель элементов". Добавьте кнопку в Form1.

  5. Дважды щелкните кнопку Button1. Окно кода откроется в событии Click для Button1.

  6. В окне кода замените приведенный ниже код.

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

    на:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
          System.EventArgs) Handles Button1.Click
       fBuildArray()
       fBuildFlowchart()
    End Sub
    
    
  7. В меню "Проект" щелкните "Добавить модуль".

  8. Замените содержимое модуля Module1 следующим кодом:

    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
    
    

    Примечание Измените константу TEMPLATEPATH, чтобы она указывала на папку установки Visio. По умолчанию расположение является одним из следующих:

    • Для Office Visio 2007 по умолчанию используется папка C:\Program Files\Microsoft Office\Visio12\1033\BASFLO_U.VSS.

    • Для Visio 2003 этот файл по умолчанию находится в папке C:\Program Files\Microsoft Office\Visio11\1033\BASFLO_U.VSS

    • Для Visio 2002 этот файл по умолчанию находится в папке C:\Program Files\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss.

  9. В меню "Отладка" нажмите кнопку "Пуск".

  10. Откройте файл C:\Simpleflowchart.vsd в Visio, чтобы просмотреть результаты.

Ссылки

Дополнительные сведения см. на следующем веб-сайте Microsoft Developer Network (MSDN):

Разработка Microsoft Office с помощью Visual Studio