Что нового

Форматирование текста в MS Word с помощью AutoIT

dumoed

Знающий
Сообщения
34
Репутация
5
Написал скрипт выдергивающий из сайтов посредством Chrome курсы валют, новости и т.п. Вставляю это добро в *.doc файл. И все ведь работает, но никак не могу найти инфу как отформатировать вставленный в Word текст, help!

к примеру в готовом doc-t нахожу url новостного сайта и меняю его название на "НОВОСТИРУ"

Код:
#include <Word.au3>

$oFind = _Word_DocFindReplace($oDoc, "<https???news?ru*^0013", "НОВОСТИРУ^0013", 2 , 0 , 0 , 0 , 1)


как добавить ему подчеркивание и жирный шрифт???
 

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
как добавить ему подчеркивание и жирный шрифт???
по идее это пример отсюда: https://www.autoitscript.com/autoit3/docs/libfunctions/_Word_DocFind.htm
НО у меня почему-то именно пример №3 с выделением текста жирным, не срабатывает. Зато текст меняет (пример №4). Да и остальные примеры тоже Самому стало интересно

Хотя чуток переделал свой пример. Сделайте в соответствующих местах приведенного примера так ( с учетом, что $oFind - это ваша строка):
Код:
$oRangeFound = _Word_DocFind($oDoc, $oFind, $oSearchRange)

и потом
Код:
$oRangeText.Bold = True
$oRangeText.Underline = True
 
Последнее редактирование:
Автор
D

dumoed

Знающий
Сообщения
34
Репутация
5
на днях попробую, спасибо!
Сообщение автоматически объединено:

Хотя чуток переделал свой пример. Сделайте в соответствующих местах приведенного примера так ( с учетом, что $oFind - это ваша строка):
определенно здесь что то не так, $oRangeFound должно быть $oRangeText ???
Сообщение автоматически объединено:

Код:
Local $oRangeFound
$oRangeFound = _Word_DocFind($oDoc, "КУРС", 0, Default, False)
$oRangeFound.Bold = True
$oRangeFound.Underline = True


то, что нужно. вот так работает, находит "КУРС", выделяет жирным и подчеркивает, теперь разбираюсь с параметрами и поиском нужного. спасибо за наводку на функцию!
Сообщение автоматически объединено:


перевел описание функции _Word_DocFind


#include <Word.au3>
_Word_DocFind ( $oDoc [, $sFindText = "" [, $vSearchRange = 0 [, $oFindRange = Default [, $bForward = True [, $bMatchCase = False [, $bMatchWholeWord = False [, $bMatchWildcards = False [, $bMatchSoundsLike = False [, $bMatchAllWordForms = False [, $bFormat = False]]]]]]]]]] )


Параметры:

$oDocWord документ - объект
$sFindText[опционально] Текст, который будем искать. При использовании пустой строки (""), можно использовать для форматирования текста. Для поиска можно использовать спецсимволы или коды символов. Например, "^p" – спецсимвол, обозначающий параграф, "^t" – знак табуляции (по умолчанию/default = "")
$vSearchRange[опционально] Уточняет, где будем искать: в "этом" выделении или в каком-либо диапазоне поиска. Может быть:
1 – поиск в текущем выделении
0 – поиск во всем документе (по умолчанию - 0)
можно использовать любой объект Word диапазона
$oFindRange[опционально] Определяет конкретный диапазон, возвращаемый последним обращением к функции _Word_DocFind().
Это необходимо, если вы хотите искать следующую или предыдущую последовательность, содержащуюся в $sFindText. По умолчанию поиск ведется с начала $vSearchRange (default).
$bForward[опционально] True для поиска вперед (по направлению к концу документа) по умолчанию (default = True)
$bMatchCase[опционально] если True то поиск будет регистрозависимым (default = False)
$bMatchWholeWord[опционально] если True то будет искать только целые слова (default = False)
$bMatchWildcards[опционально] если True то при поиске будут использоваться спецсимволы т.н. Wild cards, (default = False), подозреваю, что как раз ее нужно включать при поиске конца параграфов, табуляций и т.п.
$bMatchSoundsLike[опционально] если True находит слова, которые схожи с искомым текстом (default = False)
$bMatchAllWordForms[опционально] если True находит все формы искомого текста (например при поиске глагола "sit" будут также найдены "sitting" и"sat") (default = False)
$bFormat[опционально] если True операция форматирования будет производиться в добавок или вместо поиска текста (default = False), надо проверять
Сообщение автоматически объединено:

назрел еще один вопрос, где посмотреть список функций форматирования????? нужно выровнять вес текст, изменить шрифт и междустрочный интервал
Сообщение автоматически объединено:

пробую отформатировать весьтекст через DocRangeSet, что делаю не так?

Код:
$oRange = _Word_DocRangeSet($oDoc, -1, Default, Default, -1, Default)
$oRange.Font.Name = "Calibri"

Сообщение автоматически объединено:

Всю голову сломал, как отформатировать весь текст в документе Word c помощью AutoIT???
Сообщение автоматически объединено:

удалось пометить весь диапазон текста в Ворде так:
Код:
;  -1 - выставляем начало диапазона в начало документа,  $WdWord считаем слова до конца,  наобум берем 100000 слов, и на это количество слов сдвигаем конец диапазона
$oRange = _Word_DocRangeSet($oDoc, -1, Default, Default, $WdWord, 100000)
$oRange.Underline = False

Сообщение автоматически объединено:

NameValueDescription
wdCell12A cell.
wdCharacter1A character.
wdCharacterFormatting13Character formatting.
wdColumn9A column.
wdItem16The selected item.
wdLine5A line.
wdParagraph4A paragraph.
wdParagraphFormatting14Paragraph formatting.
wdRow10A row.
wdScreen7The screen dimensions.
wdSection8A section.
wdSentence3A sentence.
wdStory6A story.
wdTable15A table.
wdWindow11A window.
wdWord2A word.
Сообщение автоматически объединено:


Сообщение автоматически объединено:

систематизировал некоторые форматы:
$oRange.Font.Color = $color ;меняем цвет шрифта
$oRange.Font.Size = 12 ; размер шрифта
$oRange.Ialic = true ;курсив
$oRange.Bold = true ; жирный
$oRange.Underline = true ; подчеркивание
$oRange.Font.Name = "Arial" ; меняем сам шрифт
Сообщение автоматически объединено:

Худо-бедно научился менять шрифт и т.п но вопрос остается актуальным, кто знает как изменить поля документа, и междустрочный интервал???
 
Последнее редактирование:

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
назрел еще один вопрос, где посмотреть список функций форматирования?????
Вообще захожу на форум только с работы. Дома других дел хватает. Так что в планах было только через несколько дней сюда зайти с работы. Но увидел на почте, что в теме много сообщений и решил глянуть.
Честно говоря сам пока не разбирался с вордом, хотя надо бы. Для начала нужно вот эту тему посмотреть https://www.autoitscript.com/autoit3/docs/functions/ObjCreate.htm
Там пару примеров как массив свойств объекта просмотреть. И вот это : https://www.autoitscript.com/autoit3/docs/intro/lang_obj.htm
Не самые полные справки, и не про ворд, но все же.
Ещё не знаю, смотрели вот так: https://www.autoitscript.com/autoit3/docs/libfunctions/
Тут посмотреть все, что начинается с _Word Можно и про эксель глянуть для аналогии.
И конечно справка майкрософта по ворду https://docs.microsoft.com/ru-ru/office/vba/api/word.pagesetup
И справку по работе PowerShell с Word

И спасибо, что вылаживаете свои наработки и переводы
 
Автор
D

dumoed

Знающий
Сообщения
34
Репутация
5
такая же история, давно знаком с autoit, но вот уже более 10 лет не было нужды в его использовании, а тут неожиданно по работе он и вспомнился, очень помогает автоматизировать большую часть рутинных операций. Использование скриптов уже ускорило выполнение большинства моих задач (в основном мониторинг финансовых сайтов и вывод отчетности в ворд формате).
Часть статей и форумов, конечно же читал, когда писал скрипты, но продолжаю копать в том же направлении, нужно добиться еще большей автоматизации для придания документам нужного формата, сейчас активно ищу инфу по общему форматированию страниц, выводимых на печать, прежде всего, как уже писал, интересны: междустрочный интервал, границы документа и выравнивание текста. Спасибо за ссылки, надеюсь выведут таки на нужное. А работы выкладываю, чтоб самому и остальным нужную информацию потом проще было найти в одном месте. К примеры в рунете нигде не нашел толкового описания как заставить работать autoit с современными браузерами, а все оказалось куда как проще. Позже планирую вернуться к этой теме.
Сообщение автоматически объединено:

Бинго! оперируем с объектом $oDoc, постепенно двигаемся вперед - узнаем новое. Итак, изменение полей документа:

Код:
#include <Word.au3>
Global $oWord = _Word_Create()
;opening file $DocPath текстовая переменная с путем к файлу
$DocPath = "d:\text.doc"
Global $oDoc=_Word_DocOpen($oWord, $DocPath, Default, Default,False)
$oDoc.PageSetup.LeftMargin = 20
$oDoc.PageSetup.BottomMargin = 20
$oDoc.PageSetup.RightMargin = 20
$oDoc.PageSetup.TopMargin = 20
_Word_DocSaveAs($oDoc,$DocPath)
_Word_DocClose($oDoc)
_Word_Quit($oWord)

Сообщение автоматически объединено:

мелкомягкая справка по софту, по ходу, лучшее, что может пригодиться начинающему и опытному скриптописателю при работе с "микрософтОм"
Сообщение автоматически объединено:

прикольно! ровняем все параграфы по правому краю

Код:
Sleep (100)
$oDoc.Paragraphs.Alignment  = 2


Если нужно выровнять конкретный параграф то ставим его порядковый номер например выровнять 3й параграф по правому краю

Код:
Sleep (100)
$oDoc.Paragraphs(3).Alignment  = 2


на сегодня, пожалуй, хватит, лайк мне=)))), ах да, таблица с параметрами Value

NameValueDescription
wdAlignParagraphCenter1Center-aligned.
wdAlignParagraphDistribute4Paragraph characters are distributed to fill the entire width of the paragraph.
wdAlignParagraphJustify3Fully justified.
wdAlignParagraphJustifyHi7Justified with a high character compression ratio.
wdAlignParagraphJustifyLow8Justified with a low character compression ratio.
wdAlignParagraphJustifyMed5Justified with a medium character compression ratio.
wdAlignParagraphLeft0Left-aligned.
wdAlignParagraphRight2Right-aligned.
wdAlignParagraphThaiJustify9Justified according to Thai formatting layout.
Сообщение автоматически объединено:

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

Код:
$oDoc.Paragraphs.LineSpacing = 12


12 -равносильно одиночному интервалу, далее экспериментируем сами

для этих же цели также возможно использование .LineSpacingRule где вместо цифрового значения (в данном случае 12) используем нижеприведенные Value:
NameValueDescription
wdLineSpace1pt51Space-and-a-half line spacing. Spacing is equivalent to the current font size plus 6 points.
wdLineSpaceAtLeast3Line spacing is always at least a specified amount. The amount is specified separately.
wdLineSpaceDouble2Double spaced.
wdLineSpaceExactly4Line spacing is only the exact maximum amount of space required. This setting commonly uses less space than single spacing.
wdLineSpaceMultiple5Line spacing determined by the number of lines indicated.
wdLineSpaceSingle0Single spaced. default
Сообщение автоматически объединено:

убираем отступы перед и после абзаца во всем документе, в данном случае это наш объект $oDoc:

Код:
;set spaces before and after paragraph
Sleep (100)
$oDoc.Paragraphs.SpaceBefore = 0
$oDoc.Paragraphs.SpaceAfter = 0


добавляю полезный материал по регулярным выражениям в Word:

сейчас с помощью регулярок пробую найти несколько повторяющихся последовательностей в документе и выделить их жирным или подчеркиванием, кто знает, как это сделать во всем диапазоне (Range )документа ??? какие функции для этого лучше использовать?
 
Последнее редактирование:
Верх