Автоматизация Visio с помощью Visual Basic .NET
Аннотация
В этой статье показано, как автоматизировать Visio с помощью Visual Basic .NET.
Дополнительная информация
Пример кода автоматизации в этой статье выполняет следующие действия:
- Рисует простую блок-схему на странице документа Visio на основе данных, содержащихся в массиве.
- Имя страницы.
- Сохраняет документ.
Массив является двумерным: первый элемент содержит имя фигуры, а второй элемент содержит текст фигуры.
Действия по созданию примера приложения Visual Basic .NET
Запустите Microsoft Visual Studio .NET. В меню "Файл" нажмите кнопку "Создать" и выберите пункт "Проект". В разделе "Типы проектов" щелкните "Проекты Visual Basic", а затем "Приложение Windows" в разделе "Шаблоны". Form1 создается по умолчанию.
Добавьте ссылку на библиотеку объектов Visio. Для этого выполните следующие действия:
- On the Project menu, click Add Reference.
- На вкладке COM выберите один из следующих параметров и нажмите кнопку "Выбрать":
- Для Visio 2007 щелкните библиотеку типов Microsoft Visio 12.0.
- Для Visio 2003 щелкните библиотеку типов Microsoft Visio 11.0.
- Для Visio 2002 щелкните библиотеку типов Microsoft Visio 2002.
Примечание Если вы еще не сделали этого, корпорация Майкрософт рекомендует скачать и установить основные сборки взаимодействия Microsoft Office XP.
Нажмите кнопку "ОК" в диалоговом окне "Добавление ссылок", чтобы принять выбранные параметры. Если появится запрос на создание оболок для выбранных библиотек, нажмите кнопку "Да".
В меню "Вид" щелкните "Панель элементов". Добавьте кнопку в Form1.
Дважды щелкните кнопку Button1. Окно кода откроется в событии Click для Button1.
В окне кода замените приведенный ниже код.
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
В меню "Проект" щелкните "Добавить модуль".
Замените содержимое модуля 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.
В меню "Отладка" нажмите кнопку "Пуск".
Откройте файл C:\Simpleflowchart.vsd в Visio, чтобы просмотреть результаты.
Ссылки
Дополнительные сведения см. на следующем веб-сайте Microsoft Developer Network (MSDN):