Destio небольшой блог

MS Word macro

Как передать документ Word в функцию или подпрограмму

Передача аргументов в подпрограмму (subroutine) или функцию в VBA немного сложнее чем обычно, поэтому чтобы передать открытый документ на обработку в подпрограмму, можно писать вот так: Sub setDoi(activeFile As Document, articleNumber) … End Sub Dim oDoc As Document fileCount = 1 Call setDoi(oDoc, fileCount) Можно вызывать функцию и без Call, особенно если ей нужно вернуть […]

Читать дальше

, ,

Ошибка 5560, VBA

Если у .Find объекта задано свойство .MatchWildcards = True, то если Ворд не сможет понять заданное регулярное выражение, то он выдаст следующую ошибку: Run-time error 5560: Поле “Найти” содержит неверный шаблон поиска. Несколько сложнее то что у объекта “Найти и заменить” в Microsoft Word есть некоторые специфические заморочки: При задании числа встреченных значений, рекомендуемая в […]

Читать дальше

,

Как найти и выделить все вхождения текста, VBA (Word)

Окошко “Найти и заменить” в Microsoft Word может мазать все найденное желтеньким, но это не имеет отношения к выделению текста (и VBA может). А если искать с выделением (Selection.Find), то нахождение каждого следующего вхождения снимает выделение с предыдущего. Поэтому для простаты надо искать в цикле (Do While True в самый раз). Вот пример куска кода, […]

Читать дальше

, ,

Как дописать текст в конец DOCX файла, VBA

Следующий небольшой кусок кода дописывает textToTheEnd в конец файла и применяет к нему стиль L-text-normal, если такой есть в этом документе. Если нет, макрос вылетит с ошибкой, хехе. Я не помню зачем надо было сдвигать все на 1 символ вперед и как в результате будут расставлены переносы строк и абзацев. Наверное надо будет потестить. Set […]

Читать дальше

, , , ,

“Слишком длинный строковый параметр”, VBA

Сидел я крутил какие-то документы с макросами и обычный, вполне работающий макрос выпал с ошибкой: Run-time error ‘5854’: Слишком длинный строковый параметр Вот срань, оказывается свойство объекта FindReplace .Find.Replacement.Text в VBA не может принимать параметры длиной больше 255 символов (привет, 70-е). А в автозаменах довольно легко упереться в эту крохотную границу. Странно, но параметр .Execute […]

Читать дальше

,

Автоматическая нумерация страниц в Microsoft Word

Раньше я пользовался более окольным методом автоматической нумерации страниц, но вот дошли руки состряпать решение поаккуратнее. Нижеприведенный макрос сам сосчитает и вставит номера страниц сразу во все DOC и DOCX файлы (в алфавитном порядке), найденные в рабочей папке (например c:\test\ ). Конечно, для этого в колонтитуле уже должны быть указаны номера, а макрос просто установит […]

Читать дальше

, , ,

Установка номера страниц через макросы в Word

Со времени написания этого сообщения я обзавелся более продвинутым способом нумерации, а этот пусть лежит для истории. Что надо сделать? Проставить страницы у пачки .doc и docx файлов. Что уже сделано для этого? В каждом файле уже есть колонтитулы с номерами страниц, просто каждый начинается с 1 страницы. Сами номера страниц заботливо сосчитаны кривеньким перл-скриптом […]

Читать дальше

, , ,

Массовая конвертация файлов в Microsoft Office Word

Описанный способ точно работает в 2007 Офисе, так-то ничего не должно мешать работать и в других версиях, может с небольшими изменениями. В чем MSO Word сильно уступает LO Writer, так это в многообразии параметров запуска и оттого проигрывает в гибкости и функциональности, когда нужно обрабатывать много файлов сразу. Нет, это возможно, но придется лезть в […]

Читать дальше

, , , , , ,