Что нового

Операция над Word документом (.doc) - Как искать и открыть

RAMzor

Чайник
Сообщения
13
Репутация
0
Знатоки, помогите пожалуиста с 2 вопросами.
1. Можно ли не откывая Word документ (.doc) произвести поиск стринга и узнать его местоположение (чтобы открыть сразу в нужном месте)?
2. Как можно с помощю AutoiIt открыть Word документ на определённой странице?
 

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
37
Можно ли не откывая Word документ (.doc) произвести поиск стринга и узнать его местоположение (чтобы открыть сразу в нужном месте)?
- не открывая нельзя, но можно открыть документ не отображая его на экране и панели задач, и в нем воспользоваться функцией поиска, полусить нужную инфу и закрыть (выгрузить приложение из памяти)...
визуально, как буд-то документ и не открывался вовсе.

2. Как можно с помощю AutoiIt открыть Word документ на определённой странице?

Вот так :

Условия для прмера:
1) в директории со cкриптом находится файл "Test.doc"
2) документ "Test.doc" состоит не менее чем из 5 страниц текста.

Код:
#include <Word.au3>

$oWordApp = ObjCreate("Word.Application") ; создаем ссылку на OLE-сервер Word, можете считать что это ссылка на COM-объект, в Вашем случае не принципиально.
$oDoc = _WordDocOpen ($oWordApp, @ScriptDir & "\Test.doc") ;Открываете документ
$oDoc.ActiveWindow.Selection.GoTo (1, 2, 1, "5") ; вот собственно и переход на конкретную страницу, разъяснения см.далее 
$oWordApp.visible = 1 ; Делаем видимым приложение Word, в котором открыт наш документ, и курсор перемещен на нужную страницу.


По большому счету советую не забивать голову, что в этой функции чего значит, но на всякий случай поясню... используемый метод GoTo имеет следующий синтаксис:
.GoTo(What, Which, Count, Name)
где каждый из параметров обязательный, задаются параметры при помощи специальных констант VBA, в нашем конкретном случае их числовые эквиваленты ;
для What:= wdGotoPage (1)
для Which:= wdGoToNext (2)
для Count:=1 (нет соответствующей константы)
для Name:= "5" (это номер страницы! но передается он как строка!, т.к. в коллекции страниц документа ее номер это ее имя, а имя это строка!)

Используя менять нужно только Name, 4-ый параметр
$oDoc.ActiveWindow.Selection.GoTo (1, 2, 1, "5")
 
Автор
R

RAMzor

Чайник
Сообщения
13
Репутация
0
Спасибо огромное за столь внятный ответ!
С новым годом!
 

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
37
обращайтесь :smile:
отметьте пожалуйста тему решенной.
Так вы поможете тем, кто возможно будет искать нечто подобное
 
Верх