1 (изменено: folko989, 2022-11-16 17:57:26)

Тема: AHK: Копирование данных из .docx через ComObj

Добрый день!

Подскажите пожалуйста, как через ComObjCreate("Word.Application") можно взять из вордовского документа нужные данные и записать их в переменную ?

А именно:
Есть документ Word, в котором есть таблица 4х2 (но не в самом начале документа, а посередине).
Таблица все время располагается в одном и том же месте, отличия только в данных (Организация, фио, логин, пароль). Таблица выглядит так

Организация ООО "Рога и копыта"
ФИО Иванов Иван Иванович
Логин user1
Пароль pass1

Нужно взять данные из правой части таблицы:
Переменная 1 = ООО "Рога и копыта"
Переменная 2 = Иванов Иван Иванович
и т.д.

Пробовал через word.ActiveWindow.Document.Range(Start:=500, End:=550).Text выдергивать данные через диапазон символов. Но кол-во символов в именах все время разное, поэтому данные не получается поймать.
Пример документы https://docs.google.com/document/d/1NG6 … mp;sd=true

Прошу помочь мне по возможности. Заранее спасибо!

2

Re: AHK: Копирование данных из .docx через ComObj

Я бы советовал выложить здесь пример документа.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: folko989, 2022-11-16 13:30:59)

Re: AHK: Копирование данных из .docx через ComObj

teadrinker пишет:

Я бы советовал выложить здесь пример документа.

Спасибо за совет. https://docs.google.com/document/d/1NG6 … mp;sd=true

4

Re: AHK: Копирование данных из .docx через ComObj

Не надо цитировать предыдущий пост.
А нужно именно из открытого окна или можно просто из файла?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Копирование данных из .docx через ComObj

Можно просто из файла.

6

Re: AHK: Копирование данных из .docx через ComObj

Примерно так:

filePath := "D:\Downloads\Пример.docx"
tableNumber := 1
Word := ComObjGet(filePath)
cells := Word.Tables[tableNumber].Columns[2].Cells
Loop % cells.Count
   MsgBox, % RegExReplace(cells.Item[A_Index].Range.Text, "\R.$")
Word.Close()

Если таблица не первая в документе, поменяйте tableNumber.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: folko989, 2022-11-17 09:23:44)

Re: AHK: Копирование данных из .docx через ComObj

Все получилось. Спасибо большое !!!
Подскажите пожалуйста, что означает "\R.$"   ?

8

Re: AHK: Копирование данных из .docx через ComObj

Чтобы получить текст, как он есть, можно было

MsgBox, % cells.Item[A_Index].Range.Text

Посмотрите, что выдаётся в таком случае.
Чтобы избавиться от лишнего, я с помощью RegExReplace удаляю перенос строки \R и любой символ, следующий за ним . , знак $ указывает, что данная конструкция находится в в самом конце текста.
Синтаксис RegEx описан здесь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Копирование данных из .docx через ComObj

Понял. Еще раз спасибо большое !