сохранить и закрыть документы Visio Visual Basic макрос - PullRequest
3 голосов
/ 12 октября 2010

Я хочу создать страницу Visio, добавить несколько фигур, сохранить ее с заданным именем файла и закрыть ее.

В настоящее время панель инструментов объекта / шаблона всегда активна и, следовательно, сохраняется под указанным именем файла.

Как лучше всего сохранить текущий чертеж?спасибо

Dim visioApp, visioPage as Object
Set visioApp = CreateObject("visio.application")

visioApp.Documents.AddEx ("")      
Set visioPage = visioApp.ActiveWindow.Page
Set visioStencil = visioApp.Documents.Add("BASFLO_M.VSS")

' add shapes

visioApp.ActiveDocument.SaveAs ("c:\.......vsd")
visioApp.ActiveDocument.Close

1 Ответ

2 голосов
/ 13 октября 2010

Как вы указали, когда вы открываете трафарет, активный документ изменяется.Вы можете изменить его обратно на документ, который вы редактируете следующим образом:

Set visioApp = CreateObject("visio.application")

visioApp.Documents.AddEx ("")
Set visioPage = visioApp.ActiveWindow.Page

' Remember which window is active '
Set visioWindow = visioApp.ActiveWindow

Set visioStencil = visioApp.Documents.Add("BASFLO_M.VSS")

' Reactivate the drawing window '
visioWindow.Activate

visioPage.Drop visioStencil.Masters(1), 4, 4

visioApp.ActiveDocument.SaveAs "c:\temp\mydoc.vsd"
visioApp.ActiveDocument.Close

Вы также можете использовать ссылку на созданный вами объект документа и не полагаться на активный документ:

Set visioApp = CreateObject("visio.application")

' Get a reference to the docment you are creating'
Set visioDoc = visioApp.Documents.AddEx("")
Set visioPage = visioApp.ActiveWindow.Page
Set visioStencil = visioApp.Documents.Add("BASFLO_M.VSS")

visioPage.Drop visioStencil.Masters(1), 4, 4

' Use the document object, not the active document '
visioDoc.SaveAs "c:\temp\mydoc1.vsd"
visioDoc.Close

У меня есть последнее предложение.Вместо создания нового документа, а затем трафарета, я предлагаю вам создать новый документ на основе шаблона Basic Flowchart.Делая это, вы создаете документ с теми же настройками по умолчанию для сетки, шрифтов и т. Д., Что и для базовой потоковой диаграммы, которую вы создали бы, если бы выбрали этот шаблон в пользовательском интерфейсе.Еще одним преимуществом использования шаблона является то, что трафареты потоковой диаграммы будут открываться в рабочей области документа каждый раз при повторном открытии создаваемого документа.Попробуйте это:

Set visioApp = CreateObject("visio.application")

' BASFLO_M.VST is the filename of the Basic Flowchart Template (metric) '
Set visioDoc = visioApp.Documents.Add("BASFLO_M.VST")
Set visioPage = visioApp.ActiveWindow.Page

' The stencil will be already open as part of the BASFLO_M.VST workspace '
Set visioStencil = visioApp.Documents("BASFLO_M.VSS")

visioPage.Drop visioStencil.Masters(1), 4, 5
visioPage.Drop visioStencil.Masters(1), 5, 4

visioDoc.SaveAs "c:\temp\mydoc2.vsd"
visioDoc.Close
...