Как я могу изменить активное окно MS Word с помощью JACOB? - PullRequest
0 голосов
/ 22 марта 2011

Я использую библиотеку JACOB.Я могу создать новый экземпляр activeXComponent("Word.Application"), а затем открыть какой-нибудь файл.Как я могу получить экземпляр файла, который я уже открыл?

В макросах MS Word я могу использовать Windows("name.doc").Activate, где «name.doc» представляет имя файла.Как это можно сделать в JACOB?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Вы можете подключиться к работающему приложению Word:

val com_wordApp: ActiveXComponent = ActiveXComponent.connectToActiveInstance("Word.Application")

Это код скалы. Я не уверен, но в Java это должно быть

ActiveXComponent com_wordApp = ActiveXComponent.connectToActiveInstance("Word.Application")

Затем вы можете получить доступ к активному документу, например, чтобы получить закладки:

val bookMarks: Dispatch = Dispatch.call(com_wordApp.getProperty("ActiveDocument").toDispatch, "Bookmarks").toDispatch

Или вы можете получить все документы:

val com_documents: AnyRef = com_wordApp.getProperty("Documents").toDispatch

Извините за скала код. Мне нужно было много времени, чтобы все заработало, поэтому я надеюсь, что смогу помочь кому-нибудь.

1 голос
/ 13 июля 2011

Сначала вы открываете документ,

Dispatch document1 = Dispatch.call(documents, "Open", "name.doc").toDispatch();

, затем вы можете открыть другие документы и снова захотите контролировать document1 для "name.doc".

Вам просто нужно позвонить

Dispatch.call(document1, "Activate");
...