Как изменить активную страницу в Visio через библиотеку JACOB - PullRequest
2 голосов
/ 28 марта 2012

Я могу изменить activePage в Visio с кодом VBA (с Macro Recorder) в Visio, например, с X-страницы на страницу "Main"

Application.ActiveWindow.Page = Application.ActiveDocument.Pages.ItemU("Main")

Я пробовал переводить его в Java с библиотекой JACOB.

visio.projects = new ActiveXComponent("Visio.Application"); 
visio.projects.setProperty("Visible", new Variant(true));
Dispatch documents = 
     new ActiveXComponent(visio.projects.getProperty("Documents").toDispatch());
Dispatch.call(documents, "open", new Variant(fileName));
// up now a try for vba Code Translation
Dispatch activeWindow = Dispatch.get(visio.projects,"ActiveWindow").toDispatch();
Dispatch page = Dispatch.get(activeWindow, "page").toDispatch();
Dispatch activeDocument = Dispatch.get(visio.projects, "ActiveDocument").toDispatch();
Dispatch pages = Dispatch.get(activeDocument, "Pages").toDispatch();
//Dispatch actualPage = Dispatch.call(pages, "ItemU", new Variant("Main")).toDispatch(); // goes wrong
// What is next???

Я пытаюсь это завершить, но до сих пор у меня нет улучшений.

1 Ответ

1 голос
/ 29 марта 2012

работает с этим кодом.

// up now a try for vba Code Translation
ActiveXComponent activeWindow = new ActiveXComponent(visio.projects.getProperty("ActiveWindow").toDispatch());  
ActiveXComponent activeDocument = new ActiveXComponent(visio.projects.getProperty("ActiveDocument").toDispatch());
ActiveXComponent pages = new ActiveXComponent(activeDocument.getProperty("Pages").toDispatch());
Dispatch itemU = ActiveXComponent.call(pages, "itemU", "Main").toDispatch();
activeWindow.setProperty("Page", itemU);
...