2012-03-28 87 views
2

我可以在Visio用VBA代码(与宏录制)在Visio例如,从X页更改activePage页“主”如何通过JACOB图书馆更改活动页面在Visio

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

它适用于此代码。

// 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);