Vba макрос при запуске word

Офисные приложения Word и Excel имеют широкий функционал, который избыточен для рядового пользователя. Но, как всегда это бывает, нужной функции под рукой, в самый неподходящий момент, может не оказаться.

Как мы знаем, для таких случаев разработчик снабдил все приложения из пакета Microsoft Office встроенным языком программирования Visual Basic for Applications (VBA).

Весь программный код оформляется в виде процедур (макросов) или функций. И сейчас мы разберем, как автоматически запускать макросы при открытии текстового документа Word или рабочей книги Excel.

Видеоурок по данной теме «Автозапуск макросов в Word и Excel» вы можете найти на нашем Youtube-канале «Учите компьютер вместе с нами!»

Прежде всего, следует помнить, что обычные документы хранятся в файлах типа *.docx или *.xlsx и не предусматривают наличие макросов. Поэтому, первое, что нужно сделать, это включить такую поддержку. Для этого, во вкладке «Файл» выбираем пункт «Сохранить как» и в открывшемся окне «Сохранение документа«, в списке «Тип файла» выбираем «Документ Word с поддержкой макросов» или «Книга Excel с поддержкой макросов«, указываем требуемое имя файла и нажимаем кнопку «Сохранить«.

*Каждый рисунок можно увеличить щелчком левой кнопки мыши по нему

После указанных манипуляций, наши сохраненные файлы будут иметь расширения *.docm или *.xlsm. Вход в редактор VBA выполняется нажатием сочетания клавиш <ALT>+<F11>.

Дальнейшие действия, в зависимости от того, с каким файлом мы работаем, Word или Excel, будут отличаться. Поэтому, рассмотрим автозапуск макросов для каждого из этих приложений в отдельности.

1. Автозапуск макросов в Word. Здесь все предельно просто. Если вы хотите, чтобы макрос автоматически выполнялся при открытии документа, тогда вам нужно присвоить ему специальное имя «Autoopen«.

Находясь в редакторе VBA, выбираем пункт меню «Insert/Вставка«, «Module/Модуль«. Далее, в открывшемся окне модуля набираем программный код:

Public Sub Autoopen()

    …

End Sub

Начало макроса записывается командой Public Sub, конец — End Sub. Все что находится между ними — это команды VBA, которые будут автоматом выполняться при открытии данного документа, например:

Команда MsgBox («Hello, World!») выводит на экран текстовое сообщение «Hello, World!».

2. Автозапуск макросов в Excel. Как ни странно, но в Excel такой подход не срабатывает. Здесь «Autoopen» не является зарезервированным именем и такой макрос не будет выполняться автоматически при открытии книги.

Вместо этого, надо указать, что когда с объектом «Рабочая книга» случается событие «Открыть«, то нужно выполнить заданный набор команд.

Для этого, в редакторе VBA, в окне «Project» выполняем двойной щелчок левой кнопкой мыши на объекте «ЭтаКнига«. В открывшемся окне модуля, из верхнего левого списка выбираем объект «Workbook«, а из правого списка — событие «Open«, как показано на рисунке ниже.

В результате, текст макроса автоматически приобретает вид:

Private Sub Workbook_Open()

    …

End Sub

То есть, название макроса записывается в формате: Объект_Событие. Теперь, вместо многоточия прописываем требуемый программный код. В нашем случае, это команда MsgBox («Hello, World!»).

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

Как сообщалось на нашем сайте ранее, файлы Excel можно открыть в разных окнах.

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 11 ]

1 13.05.2010 14:30:21

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Тема: Выполнение требуемого макроса при запуске Word

Требуется при создании документа из шаблона Word, запустить на выполнение один из макросов.
Можно ли передать «условие» для запуска макроса через ярлык шаблона?
Условие — перед выполнением приложение Word закрыто.

2 Ответ от andrkar 13.05.2010 18:05:08

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Re: Выполнение требуемого макроса при запуске Word

внешняя ссылка
внешняя ссылка
внешняя ссылка
Вроде бы достаточно много информации по ключам запуска

3 Ответ от viter.alex 13.05.2010 18:43:58

  • Выполнение требуемого макроса при запуске Word
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выполнение требуемого макроса при запуске Word

Если макрос всегда один и тот же, то можно прописать его в стандартную процедуру, выполняющуюся при открытии документа. При редактировании шаблона откройте модуль ThisDocument и пропишите внутри неё такую процедуру:

Private Sub Document_New()
  Call ИмяВашегоМакроса
End Sub

Тогда ярлык менять не придётся.

Лучше день потерять — потом за пять минут долететь!

4 Ответ от mikkelle 14.05.2010 12:24:48

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

andrkar спасибо информация помогла.
Путаница возникла с ключами «/ttemplatename» и «/t filename». При указании в качестве templatename или filename имени шаблона, Ворд создавал документ с именем templatename.dotm или filename.dotm соответственно. Требуемым оказался ключ «/f filename»

Не нашел ответа на вопрос, как правильно записывать полное имя файла если в названии существуют пробелы, например «Мои документы». Квадратные скобки не помогают.

5 Ответ от viter.alex 14.05.2010 12:41:03

  • Выполнение требуемого макроса при запуске Word
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выполнение требуемого макроса при запуске Word

Если в имени файла присутствуют пробелы, то его нужно брать в кавычки

Лучше день потерять — потом за пять минут долететь!

6 Ответ от mikkelle 14.05.2010 12:52:24

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

viter.alex Спасибо.

7 Ответ от mikkelle 24.05.2010 10:10:55

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

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

Sub Start()
    Dim OldWordDoc As Word.Document
    Dim NewWordDoc As Word.Document
    Dim NewDocName As String
 
    Set OldWordDoc = Application.ActiveDocument
    NewDocName = myPath & "" & "Шаблон.dotm"
    Set NewWordDoc = Application.Documents.Add(NewDocName)
    OldWordDoc.Close
End Sub

Макрос находится в Шаблон.dotm

8 Ответ от Beck 20.09.2012 12:57:48

  • Beck
  • рядовой
  • Неактивен
  • Зарегистрирован: 20.09.2012
  • Сообщений: 1

Re: Выполнение требуемого макроса при запуске Word

viter.alex пишет:

Если макрос всегда один и тот же, то можно прописать его в стандартную процедуру, выполняющуюся при открытии документа. При редактировании шаблона откройте модуль ThisDocument и пропишите внутри неё такую процедуру:

Private Sub Document_New()
  Call ИмяВашегоМакроса
End Sub

Как я понимаю, в этом случае макрос будет отрабатывать при открытии нового документа. А как сделать так, чтобы отрабатывал и при открытии ранее созданых документов?

9 Ответ от Aleks 23.07.2014 13:23:44

  • Aleks
  • майор
  • Неактивен
  • Зарегистрирован: 19.05.2014
  • Сообщений: 69
  • Поблагодарили: 21

Re: Выполнение требуемого макроса при запуске Word

Чтобы при запуске конкретного файла выполнялся определенный макрос нужно сделать следующее:
1) Откройте «редактор VB» (доступно по «alt+f11»)
2) Выберите нужный проект (по имени файла) и запустите «редактор кода» для это проекта
3) В парвом выпадающем списке нужно переключить «(General)» на «Document» — это означает, что код будет применяться к конкретному документу.
4) Выполнение каких-либо действий при запуске файла описывается следующим кодом

Private Sub Document_Open()
    // текст вашего макроса - те действия которые необходимо выполнить при открытии файла  //
End Sub

5) Сохраните код и сохраните файл с поддержкой макросов (.docm). Об этом будет дополнительное сообщение.

10 Ответ от intersk 30.06.2016 09:04:41

  • intersk
  • рядовой
  • Неактивен
  • Зарегистрирован: 30.06.2016
  • Сообщений: 8

Re: Выполнение требуемого макроса при запуске Word

Нужно чтобы при открытии любого файла word со словом в названии файла «иск» выдавался запрос на ввод (InputBox) в поле «номер дела»

11 Ответ от intersk 30.06.2016 09:16:45

  • intersk
  • рядовой
  • Неактивен
  • Зарегистрирован: 30.06.2016
  • Сообщений: 8

Re: Выполнение требуемого макроса при запуске Word

для начала работы можно так…

Post’s attachments

начало проекта.png 32.11 Кб, файл не был скачан. 

You don’t have the permssions to download the attachments of this post.

Сообщений [ 11 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Ошибка при запуске макроса
  • открытие чистого шаблона при запуске word
  • при запуске Word 2003 появляется последняя сохраненная страничка
  • О запуске автомакросов
  • Заказ макроса Word
  • Заказ макроса Word
  • Ищу разработчика Макроса для word
  • Создание гиперссылки с помощью макроса Word

Выполнение требуемого макроса при запуске Word

Если вы ищите информацию по самому мощному редактору в мире Microsoft Word в сети, жаловаться на недостаток документов, литературы, различных ссылок и советов придется вряд ли. На портале о Microsoft Office Word вы узнаете про: как работать в обменном файле ворд вдвоем.
Только в разбросанном виде все это жутко неудобно. Гораздо результативнее общаться на специальных форумах. На портале о Microsoft Office Word вы узнаете про: числа в текст.
Это удобнее еще и тем, что на свою проблему вы получите отклики так сказать в развитии, можно будет обсудить, что не получается, что именно не устраивает. Наш сайт о Microsoft Office Word даст ответ про: перевести текст в pdf.
Для русскоязычных пользователей Microsoft Word можно посоветовать форум Ворд Эксперт.

На нем представлены как готовые ответы на вопросы и наработки опытных пользователей в разделах «часто задаваемые вопросы» и «готовые решения», так и обсуждения работы с документами и настройками программы в разных версиях  нашего любимого Microsoft Word. Наш сайт о Microsoft Office Word даст ответ про: макрос жирный шрифт.
Это разделы «Настройка и Форматирование», а также «Автоматизация», где вас научат, как сделать работу с программой максимально оптимальной и быстрой, написав соответствующие макросы. На портале о Microsoft Office Word вы узнаете про: как открыть поиск в ворде.

Если вы не хотите сами разбираться с макросами или ломать голову над той, либо иной, возникшей в работе проблемой, то в «Заявках на разработку» можете оставить заказ, форумчане вам помогут. Наш сайт о Microsoft Office Word даст ответ про: римские цифры прописью.

Форум Ворд Эксперт — это страничка, которую стоит запомнить, потому что она может пригодиться в любой момент. На портале о Microsoft Office Word вы узнаете про: word ключ скачать.
Форум и сайт очень разумно устроены, а все пожелания вы можете высказать в соответствующем разделе.

Помогаю со студенческими работами здесь

Автоматический запуск макроса
Добрый день, не получается с автоматическим запуском макроса в определенное время Ежедневно….

Автоматический запуск макроса
Если кто-может, помогите, пожалуйста, решить такой вопрос. в Excel заданы около 10 ячеек, в которые…

Автоматический запуск макроса, PowerPoint
Привет!

Мне надо, чтобы в PowerPoint автоматически запускался макрос по созданию презентации без…

Автоматический запуск макроса — VBA
Добрый день!
Помогите написать макрос которий будет запускатся только при запуске файла по маске…

Автоматический запуск макроса на VB в Excel 2000
Привет всем:)

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

Запуск макроса из VB в Word
Доброго времени суток, как сделать что бы при нажатии на комманд1. запускался ворд и в нем…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

Angry word helper

Возможно, у вас есть ощущение, что тема макросов в Ворде достаточно маргинальная. Кто ими может пользоваться-то вообще? Ну, малварь делают иногда… Да и пишутся они на давно забытом VBA (Visual Basic for Applications, он же несколько урезанный Visual Basic 6 в интерпретируемом виде), фу!

Но на самом деле у многих ведь возникает потребность то какой-нибудь отчётик в ворде написать, то курсовую оформить, то резюме перед отправкой в компанию вашей мечты подправить… А у некоторых работа напрямую связана с Word. Часто различные системы документации предлагают экспорт в форматы doc или docx, которые нужны вашим заказчикам. И бывает, что документы после экспорта выглядят фигово, приходится их исправлять.

Работа в ворде нередко подразумевает выполнение каких-то однообразных повторяющихся действий, которые иногда (но далеко не всегда!) решаются грамотной настройкой стилей и их применением, а также использованием шаблонов. Как же автоматизировать всё остальное? Тут-то нам на помощь приходят те самые макросы.

Что же в них такого хорошего? Ну, например, они автоматически и достаточно быстро выполняют за вас однообразные действия. Могут что-то подсчитать, переформатировать документ, пометить аннотациями подозрительные места, — словом, всё, что запрограммируете. Могут даже в режиме реального времени что-то исправлять и о чем-то предупреждать, пока вы пишете документ. VBA в Word позволяет автоматизировать практически все действия, которые вы можете выполнить с документом вручную.

Макросы можно прикрепить как к конкретному документу (в чём для нас мало пользы, а для писателей троянов это единственная опция), так и к самому ворду, что позволяет применять макросы к любому документу, с которым вы работаете.

Макросы работают в любой версии Word и требуют минимум правок при переносе с одной версии на другую (а чаще всего вообще не требуют). На макросах можно даже реализовать полноценный пользовательский интерфейс с формами!

Давайте же занырнём в Visual Basic и напишем что-нибудь полезное! В качестве первого примера я покажу, как сделать макрос, который заменит два и более последовательных перевода строки на единственный. Это часто требуется при исправлении документов после экспорта из систем документации, или если вы хотите удалить случайно проставленные лишние переводы строк в собственноручно написанном документе. Макрос сделаем добротный, с пользовательским интерфейсом и прогрессом выполнения операции.

Чтобы начать писать или использовать макросы, сначала требуется убедиться, что в Word’е отображается панель «Разработчик» («Developer»). Если она у вас не отображается, следует зайти после создания нового документа в меню «Файл» («File») -> «Параметры» («Options») -> «Настроить ленту» («Customize Ribbon»), после чего найти там и установить флажок «Разработчик» («Developer»).

Enable Word developer tab

После этого нужно зайти на вкладку «Разработчик» и выбрать меню «Visual Basic».

Word Visual Basic button

В открывшемся окне слева вы увидите два проекта: «Normal» и проект, относящийся к текущему открытому документу. Возможно, в проекте «Normal» у вас уже будет какой-то файл в каталоге «Modules». В любом случае, создайте новый модуль, кликнув правой кнопкой по проекту «Normal» и выбрав «Insert» -> «Module».

Word insert new module

Созданный модуль представляет из себя файл, куда мы и будем писать код макросов. Можно переименовать модуль (по умолчанию его имя будет «Module1») в окне «Properties» -> «Name». Я назову свой модуль «AllMacros». Теперь откроем код модуля, дважды кликнув по его имени, и приступим к созданию макроса. Напомню, что наша цель — заменить два и более последовательных перевода строки на единственный, произведя замены по всему документу. Очевидно, нам потребуется функция, которая осуществляет поиск по тексту, ведь мы хотим найти несколько последовательных переводов строки. В Word это эквивалентно началу нового параграфа. Вы могли бы осуществить поиск начала нового параграфа через обычное окно поиска, введя в поле поиска ^p, ^13 или ^013 (что соответствует ASCII-коду перевода строки). Функция поиска будет выглядеть так:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

Private Function FindNextText(text As String, useWildcards As Boolean)

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = text

        .Forward = True

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchKashida = False

        .MatchDiacritics = False

        .MatchAlefHamza = False

        .MatchControl = False

        .MatchWildcards = useWildcards

        .MatchSoundsLike = False

        .MatchAllWordForms = False

        .Wrap = wdFindStop

    End With

    Selection.Find.Execute

    FindNextText = Selection.Find.Found

End Function

Давайте разберём, что тут происходит. Мы объявляем функцию с двумя параметрами. Первый имеет тип String — это текст для поиска, а второй Boolean говорит о том, нужно ли использовать символы подстановки (wildcards). Про них я поговорю позже. В следующих двух строках 2 и 3 мы очищаем форматирование для строки поиска и строки замены, если оно было задано пользователем. Word позволяет задать форматирование строки поиска/замены, а для нашей задачи это не требуется. Далее мы задаём набор параметров для объекта Selection.Find: выставляем неинтересные нам параметры в False, параметр Text — это текст, который мы хотим найти, а параметр MatchWildcards указывает на использование символов подстановки. Параметр Wrap говорит о том, следует ли продолжать поиск, когда мы дошли до той точки, с которой поиск начали, и у нас его значение установлено в wdFindStop, так как мы хотим остановиться, когда дойдём до конца документа, и не зацикливать поиск.

Вообще, всё это обилие свойств и объектов из объектной модели Word, Excel и PowerPoint (да, там тоже есть макросы) хорошо описано в MSDN. Например, вот тут перечислены свойства и методы объекта Find. Есть русская документация (скажем, эта страница), но она выполнена совершенно кринжовым машинным переводом, невозможно читать:

Есть совершенно смехотворные страницы:

В общем, лучше читайте на английском. :D

Кроме того, все доступные объекты, их свойства и методы можно посмотреть прямо в редакторе VBA в самом Word’е. Для этого нужно нажать F2 или выбрать меню «View» -> «Object browser», что приведет к открытию браузера объектов (Object browser), в котором можно пролистать или поискать то, что вам доступно.

Word object browser

Но вернёмся к нашей функции. На строке 19 мы непосредственно выполняем поиск заданного текста с указанными параметрами. Строка 20 — эта конструкция, аналогичная return в си-подобных языках, указывает возвращаемое значение функции. Мы возвращаем булевое значение Selection.Find.Found, которое говорит о том, было ли что-то найдено.

Хочу заметить, что использование объекта Selection.Find и изменение его свойств заменит их значения и для пользователя. Например, если вы в Word искали что-то хитроумное с конкретно заданными параметрами, то выполнение макроса заменит ваши параметры поиска на те, которые мы задали в макросе. В идеале, их можно запомнить, а потом вернуть, но мы не будем так сильно заморачиваться, а просто всё за собой подчистим. Сделаем функцию, которая сбрасывает параметры в значения по умолчанию:

Private Sub ClearFindAndReplaceParameters()

    With Selection.Find

       .ClearFormatting

       .Replacement.ClearFormatting

       .Text = «»

       .Replacement.Text = «»

       .Forward = True

       .Wrap = wdFindStop

       .Format = False

       .MatchCase = False

       .MatchWholeWord = False

       .MatchWildcards = False

       .MatchSoundsLike = False

       .MatchAllWordForms = False

    End With

End Sub

Обратите внимание, что это уже Sub, а не Function, потому что мы не хотим из этой процедуры возвращать никакое значение. Это аналог функции void в си-подобных языках.

Теперь нужно определить, как нам найти два или более последовательных перевода строки. Для этого нам и потребуются упомянутые ранее wildcards. Word поддерживает символы подстановки при поиске, и по своей функциональности они напоминают регулярные выражения. Кстати, вы можете ими пользоваться и без макросов из окна расширенного поиска:

Word wildcards

Хорошее описание символов подстановки я нашел здесь, правда, на английском языке. Составим регулярное выражение для поиска двух и более последовательных переводов строки: [^013]{2,}. Это очень похоже на классическое регулярное выражение Perl или PCRE, но в квадратных скобках в уникальном стиле Word мы задаем символ перевода строки. Фигурные скобки указывают, что символов перевода подряд должно быть два или более. Тут, кстати, есть нюанс: не во всех версиях/локализациях Word такая регулярка заработает. В некоторых случаях вместо запятой потребуется указать точку с запятой (да, в Microsoft иногда делают крайне странные вещи). Чтобы сделать наш макрос более универсальным, напишем функцию, которая вернёт регулярное выражение, пригодное для поиска в той версии Word, в которой эту функцию запустили:

Private Function GetLineBreakSearchRegExp()

    On Error GoTo Err

    FindNextText «[^013]{2,}», True

    GetLineBreakSearchRegExp = «[^013]{2,}»

    Exit Function

Err:

    GetLineBreakSearchRegExp = «[^013]{2;}»

End Function

Здесь мы сначала пытаемся осуществить поиск с помощью wildcard’а [^013]{2,}. Если всё окей, то вернём из функции этот самый wildcard как рабочий (строка 4). В противном случае произойдёт ошибка, но мы готовы её обработать: мы установили обработчик всех ошибок в строке 2. Нас перекинет на метку Err, и тут мы вернём wildcard, который пригоден для других ревизий Word (в котором запятая внутри фигурных скобок заменена на точку с запятой).

Далее напишем функцию, которая будет заменять несколько последовательных переводов строки на единственный:

Private Sub RemoveNextEnters()

    Selection.MoveStart wdWord, 1

    If Selection.Range.Start <> Selection.Range.End Then Selection.Delete

End Sub

Эта функция подразумевает, что вызывать её будут тогда, когда объект Selection указывает на найденные несколько переводов строки. В строке 2 перемещаем начало выделения (а в выделены у нас будут все найденные последовательные переводы строки) на один символ вперед, а затем в строке 3, если начало выделения не совпадает с его концом, удаляем его содержимое. Таким образом, если было выделено три перевода строки, мы отступаем вперед на 1 символ (оставляя один перевод строки нетронутым), а затем удаляем оставшиеся два.

Осталось написать последнюю функцию, которая будет всем управлять.

Sub RemoveExcessiveEnters()

    Dim lineBreakSearchRegExp As String

    lineBreakSearchRegExp = GetLineBreakSearchRegExp()

    Selection.HomeKey Unit:=wdStory

    While FindNextText(lineBreakSearchRegExp, True) = True

        RemoveNextEnters

    Wend

    ClearFindAndReplaceParameters

End Sub

Здесь мы оперируем ранее написанными функциями. Сначала получаем текст регулярного выражения (wildcard’а) для поиска нескольких переводов строки подряд, затем вызовом HomeKey в строке 5 переходим в самое начало документа (перемещаем туда курсор), а затем в цикле ищем все интересующие нас места и удаляем излишние переводы строки. В конце сбрасываем параметры поиска на значения по умолчанию.

Finished word macro

Вот и всё, макрос можно запускать! Обратите внимание, что все функции, кроме последней, мы пометили Private. Мы не хотим, чтобы их вызывали напрямую. Доступной для вызова снаружи будет только функция RemoveExcessiveEnters. Перед запуском макроса стоит убедиться, что макросы включены. Если вылазит такая панель, то нужно нажать «Включить содержимое» («Enable content»):

Word enable content

Если такой панели нет, то можно зайти в меню «Файл» («File») -> «Сведения» («Info») и включить макросы уже оттуда:

Word enable content from info menu

Вы можете включить макросы на время одного сеанса Word (это по умолчанию и происходит, если нажимаете «Включить содержимое»), так что после перезапуска Word макросы снова будут отключены. Для запуска макроса возвращаемся в Word на панель «Разработчик» и нажимаем кнопку «Макросы» («Macros»), выбираем наш макрос RemoveExcessiveEnters и нажимаем «Выполнить» («Run»). Разумеется, у вас должен быть открыт какой-нибудь подопытный документ, где имеются лишние переводы строк. В качестве бонуса наш макрос ещё и удалит пустые элементы списков, потому что они представляют из себя точно такие же несколько переводов строки подряд.

Word macro: before and after

Макрос выполняется достаточно быстро. Его действие можно отменить (каждый шаг независимо), открыв меню выполненных действий:

Undo Word macro

Макросы можно отлаживать через окно VBA, в котором мы писали макрос. Кликнув слева от строки кода, можно, как и в других средах разработки, поставить точку останова, а потом запустить макрос кнопкой «Run». Запустится та функция, на которой у вас находится курсор. Если вы поставите курсор на функцию с параметрами, то появится обычный запрос на выбор макроса для запуска, как при нажатии на кнопку «Макросы» в Word.

Debug Word macros

Думаю, что материала для одной статьи уже вполне достаточно. Я, конечно, пообещал горы функционала в виде интерфейса пользователя, отслеживания прогресса выполнения, и всё это обязательно будет, но в следующей публикации.

Код макроса можно скачать тут. Вы сможете его импортировать к себе в Word, кликнув правой кнопкой на «Normal» -> «Import file…» и выбрав загруженный файл.

P.S. Кстати, рекомендую создавать бэкапы своих макросов, экспортируя их куда-нибудь на диск. Даже лицензионный Word имеет свойство их иногда по какой-то причине удалять из шаблона Normal, в котором мы их создавали.

Формулировка задачи:

Может ли макрос запускаться автоматически, при открытии документа. И еще, никто не знает, где можно достать список обьектов и методов и описания к ним, относящиеся именно к ВОРДу??

Код к задаче: «Автоматический запуск макроса при старте Word-а»

textual

Public Sub AutoOpen()
MsgBox 'DA!'
End Sub

Полезно ли:

15   голосов , оценка 4.267 из 5

Понравилась статья? Поделить с друзьями:
  • Vba макрос excel поиск
  • Vba как открыть документ word
  • Vba как открывается excel
  • Vba как обратится к таблице excel
  • Vba как закрыть сам excel