Автор Тема: [Автоматизация] Редактирование документов Word  (Прочитано 487 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн igorit [?]

  • Новичок
  • *
  • Сообщений: 10
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет!
В Autoit я довольно слаб, потому нуждаюсь в вашей помощи.
Имеется огромное количество документов WORD (docx) в которые нужно добавить простую правку: добавить колонтитул (определенный текст) весь текст документа вделать Times New Roman 14.
По одному открывать - уйдут недели... Можно как-то автоматизировать?
Перебор документов сделаю сам без проблем. Я не знаю как редактировать.

Русское сообщество AutoIt


Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Привет, нужно начать запись макроса, выполнить все действия, остановить. Посмотреть код макроса и адаптировать его к autoit, обычно это достаточно просто.

Помечен как лучший ответ пользователем igorit Отправлен Май 16, 2017, 16:48:01

Онлайн pvnn [?]

  • Новичок
  • *
  • Сообщений: 199
  • Репутация: 18
    • Награды
  • Версия AutoIt: 3.3.12.0
Можно так:
(нажмите для показа/скрытия)

« Последнее редактирование: Май 16, 2017, 10:50:02 от pvnn »

Оффлайн igorit [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В общем, попробовал записать макрос. Последовательность:
 - Вставка текста из буфера
 - выделение всего текста
 - Times New Roman
 - 14
 - Жирный шрифт
 - Жирный шрифт (делается для того что бы убрать все жирные выделения в тексте)

Код макроса:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
    Selection.WholeStory
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 14
    ActiveWindow.ActivePane.VerticalPercentScrolled = 0
    Selection.Font.Bold = wdToggle
End Sub

НО! Макрос не может записать редактирование колонтитула. Если включить запить макроса, то колонтитул не редактируется. Если же начать редактировать колонтитул, и включить запись макроса, то колонтитул закрывается...
А это одна из самых сложных работ (колонтитул) так как его нужно открыть, вставить туда текст, подогнать колонтитул под определенные размеры... на все это уходит на много больше времени чем на все остальные действия.
Решил это так: Создал документ Колонтитул.docx открываю документ который надо отредактировать (на пример Doc1.docx), копирую оттуда содержимое в Колонтитул.docx, редактирую и сохраняю под именем Doc1.docx....
Как это все можно автоматизировать? Точнее как это можно прописать в Autoit?
 - Открыть Doc1.docx
 - Скопировать содержимое
 - закрыть
- открыть Колонтитул.docx
 - Вставка текста из буфера
 - выделение всего текста
 - Times New Roman
 - 14
 - Жирный шрифт
 - Жирный шрифт (делается для того что бы убрать все жирные выделения в тексте)
 - сохранить под именем Doc1.docx

Можете помочь с кодом? Если еще с открытием/закрытием документов можно разобраться из справки, то макрос я точно не переделаю....


Добавлено: Май 16, 2017, 10:04:05
Можно так:

pvnn, не сразу увидел ваше сообщение. Сейчас посмотрю

Русское сообщество AutoIt

Re: [Автоматизация] Редактирование документов Word
« Ответ #3 Отправлен: Май 16, 2017, 10:02:31 »

Онлайн pvnn [?]

  • Новичок
  • *
  • Сообщений: 199
  • Репутация: 18
    • Награды
  • Версия AutoIt: 3.3.12.0
Еще вариант, через VBS
(нажмите для показа/скрытия)


Добавлено: Май 16, 2017, 10:47:50
Исправил 2 ответ, теперь Word-файл перезаписывается
« Последнее редактирование: Май 16, 2017, 10:48:39 от pvnn »

Оффлайн igorit [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо большое! Начал понемногу разбираться в функции. К сожалению оба примера подошли лишь частично: текст форматируют на ура! Но колонтитул только вставляется, и его всеравно нужно редактировать в ручную (шрифт/размер/положение/цвет..) так как ни одна команда форматирования шрифта не срабатывает в колонтитуле :(
Ну, вполне возможно что я все делаю не так.
Есть ли вообще справка по Word.au3?
Я попробовал переделать код под мой вариант работы но получаю ошибку: "error: wdUseDestinationStylesRecovery(): undefined function"
код:
(нажмите для показа/скрытия)


Добавлено: Май 16, 2017, 16:29:48
Сейчас не могу разобраться как вставлять из буфера то что скопировано. На $oWord.Selection.PasteAndFormat (wdUseDestinationStylesRecovery) ругается. Не знаю как правильно записать в Autoit-e команду из макроса Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
Код:
(нажмите для показа/скрытия)



Добавлено: Май 16, 2017, 16:47:42
Все! Работает!
Заменил $oWord.Selection.PasteAndFormat (wdUseDestinationStylesRecovery) на $oDoc2.Range.Paste и все заработало!
Всем спасибо!
Конечный результат:
(нажмите для показа/скрытия)
« Последнее редактирование: Май 16, 2017, 16:47:42 от igorit, Причина: Объединение сообщений »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2085
  • Репутация: 451
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
wdUseDestinationStylesRecovery - это константа, она равна 19, это находится в гугле за 1 минуту. Вот ссылка https://msdn.microsoft.com/en-us/library/office/ff844915.aspx

Русское сообщество AutoIt

Re: [Автоматизация] Редактирование документов Word
« Ответ #6 Отправлен: Май 16, 2017, 19:04:18 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
4793 Просмотров
Последний ответ Сентябрь 12, 2010, 11:08:09
от damien2008
2 Ответов
3149 Просмотров
Последний ответ Март 02, 2011, 15:20:42
от madmasles
26 Ответов
13519 Просмотров
Последний ответ Сентябрь 30, 2014, 13:04:17
от SA
0 Ответов
765 Просмотров
Последний ответ Октябрь 04, 2014, 20:04:04
от Tunfa
4 Ответов
1235 Просмотров
Последний ответ Ноябрь 11, 2014, 03:52:02
от Yashied
11 Ответов
1442 Просмотров
Последний ответ Февраль 11, 2015, 19:08:27
от Suppir
2 Ответов
1630 Просмотров
Последний ответ Июль 08, 2015, 18:11:14
от Feeze
1 Ответов
1944 Просмотров
Последний ответ Август 22, 2015, 12:17:11
от madmasles
0 Ответов
1800 Просмотров
Последний ответ Август 22, 2015, 12:12:40
от madmasles
0 Ответов
713 Просмотров
Последний ответ Февраль 28, 2016, 12:46:56
от Suppir