Пример макроса для word

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, в котором мы их создавали.

Содержание

  • VBA PDF (бесплатные загрузки)
  • Примеры Word VBA «Шпаргалка»
  • Учебное пособие по макросам Word VBA
  • Пример простого макроса Word
  • Объект документа Word
  • Документы
  • Диапазон, выделение, абзацы
  • Примеры макросов Word

Добро пожаловать в наше мега-руководство по Word VBA / макросам!

Эта страница содержит:

    1. Учебное пособие по Word VBA в формате PDF (бесплатная загрузка)
    2. Word VBA «Шпаргалка», содержащая список наиболее часто используемых фрагментов кода Word VBA.
    3. Полное руководство по Word VBA / Macro.
    4. Список всех наших руководств по макросам Word VBA с возможностью поиска

Возможно, вас заинтересует наше интерактивное руководство по VBA для Excel. Хотя некоторые из примеров / упражнений относятся к Excel VBA, большая часть содержимого является общим для всех VBA, и вам может быть полезно изучить такие концепции, как If, Loops, MessageBoxes и т. Д.

VBA PDF (бесплатные загрузки)

Загрузите наше бесплатное руководство по Microsoft Word VBA! Или учебники VBA для других программ Office!

Скачать

Ниже вы найдете простые примеры кода VBA для работы с Microsoft Word.

Выбрать / перейти к

ОписаниеКод VBABackspaceSelection.TypeBackspaceВыбрать весь документSelection.HomeKey Unit: = wdStory
Selection.ExtendКопироватьSelection.CopyУдалитьSelection.Delete Unit: = wdCharacter, Count: = 1Вставить послеSelection.InsertAfter «текст»Начало строкиSelection.HomeKey Unit: = wdLineКонец линииSelection.EndKey Unit: = wdLineВставитьSelection.PasteВыбрать всеSelection.WholeStoryВыбрать всю строкуSelection.EndKey Unit: = wdLine, Extend: = wdExtendВверх по абзацуSelection.MoveUp Unit: = wdParagraph, Count: = 1Переместить вправо на один символSelection.MoveRight Unit: = wdCharacter, Count: = 1Переместить вправо на одну ячейку в таблицеSelection.MoveRight Unit: = wdCellПерейти к началу документаSelection.HomeKey Unit: = wdStoryПерейти в конец документаSelection.EndKey Unit: = wdStoryПерейти на страницу 1Selection.GoTo What: = wdGoToPage, Which: = wdGoToNext, Name: = ”1 ″Перейти к началу страницыSelection.GoTo What: = wdGoToBookmark, Name: = ” Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Return to Top

Закладки

ОписаниеКод VBAДобавлятьС ActiveDocument.Bookmarks
.Add Range: = Selection.Range, Name: = «Name».
.DefaultSorting = wdSortByName
.ShowHidden = Ложь
Конец сСчитатьDim n as Integer
n = ActiveDocument.Bookmarks.CountУдалитьActiveDocument.Bookmarks («Имя закладки»). УдалитьСуществуют?Если ActiveDocument.Bookmarks.Exists («BookmarkName») = True, то
‘Сделай что-нибудь
Конец, еслиПерейти кSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”ВыбиратьActiveDocument.Bookmarks («Имя закладки»). ВыберитеЗаменить текстSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter «Новый текст»
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Name: = ”BookmarkName”

Return to Top

Документ

ОписаниеКод VBAАктивироватьДокументы («Example.doc»). АктивироватьДобавить в переменнуюDim doc As Document
Установить doc = Documents.AddДобавлятьDocuments.AddДобавить (из другого документа)Documents.Add Template: = ”C: Forms FormDoc.doc”, _
NewTemplate: = FalseЗакрыватьДокументы («Example.doc»). ЗакрытьЗакрыть — сохранить измененияДокументы («Example.doc»). Закройте SaveChanges: = wdSaveChangesЗакрыть — не сохранятьДокументы («Example.doc»). Закройте SaveChanges: = wdDoNotSaveChanges.Закрыть — запрос на сохранениеДокументы («Example.doc»). Закройте SaveChanges: = wdPromptToSaveChanges.

Return to Top

Столбцы

ОписаниеКод VBAСохранить какДокументы («Example.doc»). SaveAs («C: Example Example.doc»)СохранитьДокументы («Example.doc»). СохранитьЗащищатьДокументы («Example.doc»). Защитить пароль: = «пароль»Снять защитуДокументы («Example.doc»). Снять пароль: = «пароль»Число страницDim varNumberPages как вариант
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)РаспечататьДокументы («Example.doc»). Распечатать

Return to Top

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Шрифт

ОписаниеКод VBAРазмерSelection.Font.Size = 12ЖирныйSelection.Font.Bold = TrueКурсивSelection.Font.Italic = TrueПодчеркиваниеSelection.Font.Underline = wdUnderlineSingleВсе заглавные буквыSelection.Font.AllCaps = TrueЦветSelection.Font.TextColor = vbRedИмяSelection.Font.Name = «Абади»Нижний индексSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueЦвет выделенияSelection.Range.HighlightColorIndex = wdYellowСтильSelection.Style = ActiveDocument.Styles («Нормальный»)

Return to Top

Вставлять

ОписаниеКод VBAВставить автотекстSelection.TypeText Текст: = ”a3 ″
Selection.Range.InsertAutoTextВставить код датыВставить файлSelection.InsertFile («C: Docs Something.doc»)Вставить разрыв страницыSelection.InsertBreak Тип: = wdPageBreakВставить символ абзацаSelection.TypeText Text: = Chr $ (182)Вставить вкладкуSelection.TypeText Текст: = vbTabВставить текстSelection.TypeText Text: = «Любой текст»Вставить абзац типаSelection.TypeParagraphВставить абзацSelection.InsertParagraph

Return to Top

Петли

ОписаниеКод VBAСделать до конца документаСделать до ActiveDocument.Bookmarks (« Sel») = ActiveDocument.Bookmarks (« EndOfDoc»)
‘Сделай что-нибудь
SubДля каждого документа в ДокументахDim doc As Document
Для каждого документа в документах
‘Сделай что-нибудь
Следующий документЦикл по абзацамПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Пункт

ОписаниеКод VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = ИстинаПробел послеSelection.ParagraphFormat.SpaceAfter = 12Пространство доSelection.ParagraphFormat.SpaceBefore = 0Выровнять по центруSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterВыровнять по правому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphRightВыровнять по левому краюSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftЛевый отступSelection.ParagraphFormat.LeftIndent = InchesToPoints (3,75)Правый отступSelection.ParagraphFormat.RightIndent = InchesToPoints (1)Межстрочный интервалС Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Конец сПеребрать все абзацыПодпункты через абзацы
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 На iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далее я

Return to Top

Учебное пособие по макросам Word VBA

Это руководство по использованию VBA с Microsoft Word. Это руководство научит вас писать простой макрос и взаимодействовать с документами, диапазонами, выделениями и абзацами.

Примечание. Если вы новичок в Macros / VBA, вам также может быть полезна эта статья: Как писать макросы VBA с нуля.

VBA — это язык программирования, используемый для автоматизации программ Microsoft Office, включая Word, Excel, Outlook, PowerPoint и Access.

Макросы представляют собой блоки кода VBA, которые выполняют определенные задачи.

Когда ты Записать макрос, Word запишет код VBA в макрос, что позволит вам повторять ваши действия. Вы можете увидеть список всех доступных макросов из Просмотр> Макросы.

После записи макроса вы сможете редактировать макрос из списка макросов:

Когда вы нажимаете Редактировать, вы открываете Редактор VBA. Используя редактор VBA, вы можете редактировать записанные макросы или писать макрос Word с нуля. Для доступа к редактору VBA используйте ярлык ALT + F11 или щелкните Visual Basic от Лента разработчика.

Пример простого макроса Word

Это простой пример макроса Word VBA. Он выполняет следующие задачи:

  • Открывает документ Word
  • Записывает в документ
  • Закрывает и сохраняет документ Word.
123456789101112131415 Sub WordMacroExample ()’Открыть документ и назначить переменнойDim oDoc как документУстановите oDoc = Documents.Open («c: Users something NewDocument.docx»).’Написать в документSelection.TypeText «www.automateexcel.com»Selection.TypeParagraph’Сохранить и закрыть документoDoc.SaveoDoc.CloseКонец подписки

Основы работы с макросами Word

Весь код VBA должен храниться в подобных процедурах. Чтобы создать процедуру в VBA, введите «Sub WordMacroExample» (где «WordMacroExample» — желаемое имя макроса) и нажмите ВХОДИТЬ. VBA автоматически добавит круглые скобки и End Sub.

Объект документа Word

При взаимодействии с Microsoft Word в VBA вы часто будете ссылаться на Word «Объекты». Наиболее распространенные объекты:

Объект приложения — сам Microsoft Word

Объект документа — документ Word

Объект диапазона — Часть документа Word

Объект выделения — Выбранный диапазон или положение курсора.

заявка

Приложение — это объект «верхнего уровня». Через него можно получить доступ ко всем остальным объектам Word.

Помимо доступа к другим объектам Word, можно применить настройки «уровня приложения»:

1 Application.Options.AllowDragAndDrop = True

Это пример доступа к «Выборке» в «Windows (1)» в Приложении:

1 Application.Windows (1) .Selection.Characters.Count

Однако к наиболее распространенным объектам Word можно получить доступ напрямую, без ввода полной иерархии. Поэтому вместо этого вы можете (и должны) просто ввести:

1 Selection.Characters.Count

Документы

ActiveDocument

Часто у вас есть два или более документов, открытых в Word, и вам нужно указать, с каким конкретным документом Word следует взаимодействовать. Один из способов указать, какой документ использовать ActiveDocument. Например:

1 ActiveDocument.PrintOut

… Напечатал бы ActiveDocument. ActiveDocument — это документ в Word, который «имеет фокус»

Чтобы переключить ActiveDocument, используйте команду Activate:

1 Документы («Example.docx»). Активировать

Этот документ

Вместо использования ActiveDocument для ссылки на активный документ вы можете использовать ThisDocument для ссылки на документ, в котором хранится макрос. Этот документ никогда не изменится.

Переменные документа

Однако для более сложных макросов может быть сложно отслеживать активный документ. Также может быть неприятно переключаться между документами.

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

Этот макрос назначит ActiveDocument переменной, а затем распечатает документ, используя переменную:

12345 Sub VarExample ()Dim oDoc как документУстановите oDoc = ActiveDocumentoDoc.PrintOutКонец подписки

Документ Методы

Открыть документ

Чтобы открыть документ Word:

1 Documents.Open «c: Users SomeOne Desktop Test PM.docx»

Мы рекомендуем всегда назначать документ переменной при его открытии:

12 Dim oDoc как документУстановите oDoc = Documents.Open («c: Users SomeOne Desktop Test PM.docx»).

Создать новый документ

Чтобы создать новый документ Word:

Мы можем указать Word создать новый документ на основе некоторого шаблона:

1 Documents.Add Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»

Как всегда, присвоение документа переменной при создании или открытии помогает избавить от серьезных проблем:

12 Dim oDoc как документУстановите oDoc = Documents.Add (Template: = «C: Program Files Microsoft Office Templates MyTemplate.dotx»)

Сохранить документ

Чтобы сохранить документ:

или Сохранить как:

1 ActiveDocument.SaveAs FileName: = c: Users SomeOne Desktop test2.docx «, FileFormat: = wdFormatDocument

Закрыть документ

Чтобы закрыть документ и сохранить изменения:

1 ActiveDocument.Close wdSaveChanges

или без сохранения изменений:

1 ActiveDocument.Close wdDoNotSaveChanges

Распечатать документ

Это напечатает активный документ:

1 ActiveDocument.PrintOut

Диапазон, выделение, абзацы

Диапазон а также Выбор являются, вероятно, наиболее важными объектами в Word VBA и, безусловно, наиболее часто используемыми.

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

Выбор относится к выделенному тексту (или другому объекту, например изображениям) или, если ничего не выделено, к точке вставки.

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

Диапазон

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

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Content

или он может быть маленьким, как один символ.

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

12 Dim oRange As RangeУстановите oRange = ActiveDocument.Range.Words (1)

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

В следующем примере мы выделим первое слово второго абзаца жирным шрифтом:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True

Установить текст диапазона

Чтобы установить текстовое значение диапазона:

123 Dim oRange As RangeУстановите oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = «Привет»

(Совет: обратите внимание на пробел после «Hello». Поскольку слово «объект» включает пробел после слова, просто «hello» мы получим «Hellonext word»)

С диапазонами можно делать сотни вещей. Всего несколько примеров (предполагается, что вы уже сделали объектную переменную апельсин относится к интересующему диапазону):

Изменить шрифт

1 oRange.Font.Name = «Arial»

Отображение в окне сообщения количества символов в определенном диапазоне

1 MsgBox oRange.Characters.Count

Вставьте текст перед ним

1 oRange.InsertBefore «это вставленный текст»

Добавить сноску к диапазону

12 ActiveDocument.Footnotes.Add Диапазон: = oRange, _Text: = «Подробнее читайте на easyexcel.net.»

Скопируйте в буфер обмена

1234 oRange.CopyЧасто вам нужно перейти к конкретному диапазону. Итак, вы можете начать, начать и закончитьoRange.Start = 5oRange.End = 50

После приведенного выше кода oRange будет относиться к тексту, начинающемуся с пятого и заканчивающемуся 50-м символом в документе.

Выбор

Выбор используется даже шире, чем Диапазон, потому что с ним легче работать Выборы чем Диапазоны, ЕСЛИ ваш макрос взаимодействует ТОЛЬКО с ActiveDocument.

Сначала выберите желаемую часть вашего документа. Например, выберите второй абзац в активном документе:

1 ActiveDocument.Paragraphs (2) .Range.Select

Затем вы можете использовать объект выбора для ввода текста:

1 Selection.TypeText «Какой-то текст»

Мы можем ввести несколько абзацев ниже «Некоторый текст»:

12 Selection.TypeText «Какой-то текст»Selection.TypeParagraph

Часто необходимо знать, выделен ли какой-то текст или у нас есть только точка вставки:

12345 Если Selection.Type wdSelectionIP ТогдаSelection.Font.Bold = TrueЕщеMsgBox «Вам нужно выделить текст».Конец, если

При работе с объектом Selection мы хотим поместить точку вставки в определенное место и запускать команды, начиная с этой точки.

Начало документа:

1 Selection.HomeKey Unit: = wdStory, Extend: = wdMove

Начало текущей строки:

1 Selection.HomeKey Unit: = wdLine, Extend: = wdMove

Параметр Extend wdMove перемещает точку вставки. Вместо этого вы можете использовать wdExtend, который выделит весь текст между текущей точкой вставки.

1 Selection.HomeKey Unit: = wdLine, Extend: = wdExtend

Переместить выделение

Самый полезный метод изменения положения точки вставки — «Перемещение». Чтобы переместить выделение на два символа вперед:

1 Selection.Move Unit: = wdCharacter, Count: = 2

чтобы переместить его назад, используйте отрицательное число для параметра Count:

1 Selection.Move Unit: = wdCharacter, Count: = — 2

Параметр единицы измерения может быть wdCharacter, wdWord, wdLine или другим (используйте справку Word VBA, чтобы увидеть другие).

Чтобы вместо этого переместить слова:

1 Selection.Move unit: = wdWord, Count: = 2

С выделением легче работать (по сравнению с диапазонами), потому что он похож на робота, использующего Word, имитирующего человека. Где находится точка вставки — какое-то действие произойдет. Но это означает, что вы должны позаботиться о том, где находится точка вставки! Это непросто после многих шагов в коде. В противном случае Word изменит текст в нежелательном месте.

Если вам нужно какое-то свойство или метод, недоступный в объекте Selection, вы всегда можете легко получить диапазон, связанный с выбором:

1 Установите oRange = Selection.Range.

СОВЕТ: Использование Выбор часто проще, чем использование диапазонов, но также и медленнее (важно, когда вы имеете дело с большими документами)

Абзацы

Вы не можете напрямую использовать объект Paragraphs для изменения текста:

1 ActiveDocument.Paragraphs (1) .Text = «Нет, это не сработает»

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

1 ActiveDocument.Paragraphs (1) .Range.Text = «Теперь работает :)»

Но вы можете напрямую изменить его стиль:

1 ActiveDocument.Paragraphs (1) .Style = «Нормальный»

или измените форматирование на уровне абзаца:

1 ActiveDocument.Paragraphs (1) .LeftIndent = 10

или, может быть, вы хотите сохранить этот абзац на одной строке со следующим абзацем:

1 ActiveDocument.Paragraphs (1) .KeepWithNext = True

Сделайте абзац по центру:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

ОЧЕНЬ полезно назначить конкретный абзац объектной переменной. Если мы присвоим переменной конкретный абзац, нам не нужно беспокоиться, станет ли первый абзац вторым, потому что мы вставили перед ним один абзац:

12 dim oPara как абзацУстановите oPara = Selection.Paragraphs (1) ‘здесь мы присваиваем первый абзац текущего выделения переменной

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

1234567 Sub ParagraphExample ()Dim oPara как абзацУстановить oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore ‘Вставить абзацMsgBox oPara.Range.TextКонец подписки

Объект абзаца очень часто используется в циклах:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara как абзацДля каждого параметра в ActiveDocument.Paragraphs«Сделай что-нибудь с этим. Мы просто покажем’текст абзаца, если его стиль — «Заголовок 4″Если oPara.Style = «Заголовок 4», тоMsgBox oPara.Range.TextКонец, еслиДалее oParaКонец подписки

Word VBA Tutorial Заключение

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

Примеры макросов Word

Примеры макросов Word
Шаблоны
Добавить новые документы
Подсчет слов в выделенном фрагменте
Текстовые поля
Сохранить как PDF
Закладки
Таблицы
Найти, найти и заменить
Открытые документы

Word VBA: часто задаваемые вопросы

Что такое макрос Word?

Макрос — это общий термин, обозначающий набор инструкций по программированию, которые автоматизируют задачи. Макросы Word автоматизируют задачи в Word с помощью языка программирования VBA.

Есть ли в слове VBA?

Да, в Microsoft Word есть редактор VBA. Доступ к нему можно получить, нажав клавиши ALT + F11 или перейдя в раздел «Разработчик»> «Visual Basic».

Как использовать VBA в Word?

1. Откройте редактор VBA (ALT + F11 или Разработчик> Visual Basic).
2. Выберите «Вставить»> «Модуль», чтобы создать модуль кода.
3. Введите «Sub HelloWorld» и нажмите Enter.
4. Между строками «Sub HelloWorld» и «End Sub» введите «MsgBox« Hello World! »
5. Вы создали макрос!
6. Теперь нажмите «F5», чтобы запустить макрос.

Нередко простановка HTML тегов в статье занимает почти столько же времени, сколько ее написание. Особенно часто такая проблема возникает со статьями со сложной версткой, включающей множество заголовков, списков, цитат и стилей.

Заметно облегчить работу по подготовке текстов к публикации на web-сайте помогут макросы Word, которые могут автоматизировать любую задачу. Для написания такого макроса требуется знание языка программирования Visual Basic for Applications (VBA), встроенного не только в линейку программных пакетов от MicroSoft, но и многие другие приложения. Однако, благодаря тому, что VBA представляет собой упрощенную версию Visual Basic, начать писать простейшие скрипты может любой пользователь.

Кроме того, упростить задачу по написанию VBA макроса поможет возможность записи всех действий пользователя, которые автоматически преобразуются в программный код. Таким образом, чтобы создать простейший макрос, достаточно:

  • выбрать пункт меню Вид –> Макросы –> Запись макроса;
  • Запись макроса

  • дать ему любое имя;
  • Имя макроса

  • выполнить необходимые действия, которые вы хотите автоматизировать;
  • остановить запись (Вид –> Макросы –>Остановить запись).

Остановка записи

Кликнув по пункту меню Вид –> Макросы –> Запись макроса, вы откроете окно со список всех имеющихся у вас макросов и сможете запустить их, отредактировать или удалить.

Расстановка тегов абзаца <P> в Word при помощи VBA макроса

Предварительная простановка тегов

в тексте перед его размещением требуется при работе со многими CMS. Далеко не все встроенные в web-движки редакторы могут автоматически опознать абзацы в статье и автоматически вставить туда тексты. Кроме того, нередко разбивку текста HTML-тегами требуют и от копирайтеров, чтобы размещение статьи занимало у заказчика как можно меньше времени.

Самый простой способ автоматизировать вставку HTML-тега в Word – это использование опции автозамены (окошко «Найти и заменить»), вызываемой сочетанием клавиш Ctrl+H.

Вставляем в строку «Найти» сочетание ^p, а в строку «Заменить на» </p>^p<p> и жмем на кнопку «Заменить все». Word автоматически проставит необходимые HTML-теги в тексте.

Замена абзацев на HTML-теги

Чтобы перевести данное действие в макрос, запустим его запись перед выполнением всех действий.

  1. Включаем запись макроса.
  2. Выполняем замену абзацев на HTML-теги в тексте при помощи опции «Заменить все».
  3. Останавливаем запись.

Теперь, чтобы проставить тег <P> в статье, вам будет достаточно нажать единственную кнопку запуска макроса.

Готовый код (помимо простановки тегов, он изменяет шрифт текста на Times New Roman и устанавливает размер 11):

Sub P()



Selection.WholeStory
Selection.Font.Name=»TimesNewRoman»
Selection.Font.Size=11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»^p»
.Replacement.Text=»</p>^p<p>»
.Forward=True
.Wrap=wdFindAsk
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.HomeKeyUnit:=wdStory
Selection.TypeTextText:=»<p>»
Application.Browser.Next
Selection.EndKeyUnit:=wdStory
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeBackspace
End Sub

Учтите, что если в конце вашего текста есть много лишних абзацев, то данный VBA скрипт обязательно заменит их на HTML-теги, поэтому обязательно проверяйте то, как выглядит конец статьи, перед ее непосредственной публикацией на сайте.

Как видите, код интуитивно понятный, и многие команды VBA имеют говорящее название, указывающее на их функцию:

  • Selection.Find.Replacement.ClearFormatting – заменить в выбранном тексте,
  • .Text – текст, который нужно найти;
  • .Replacement.Text – текст для замены.

Команда Selection.TypeBackspace обозначение удаление одного символа, стоящего впереди курсора. Она необходима, так как в случае выполнения замены абзацев на HTML-теги

в конце всегда будет находиться лишний открывающий тег <P>.

Продолжим писать наш макрос для «Ворда». Пусть он обрамляет тегами <b></b> или <strong></strong> или <span class=»bolder»></span> текст, выделенный жирным.

Сделать это при помощи автозамены можно так.

В поле «Найти» вставляем текст (<*>). В пункте «Формат» выбираем Шрифт –> Полужирный. Ставим галочку в пункте «Подстановочные знаки». В поле «Заменить на» пишем <b>1</b>. Нажимаем «Заменить все».

Замена жирного текста в Ворде

У такой опции есть один недостаток: программа расставит обрамляющие HTML-теги не возле вокруг всего «куска» жирного текста, а вокруг каждого слова, следовательно, итоговый код будет очень грязный.

Лишние HTML-теги

Чтобы исправить эту ошибку, просто заменим </b> <b> на пробел.

Удаляем лишние теги

Итоговый код (на примере замены на <span class=»bolder»></span>):

Sub B()



Selection.Find.ClearFormatting
Selection.Find.Font.Bold=True
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»(<*>)»
<span class=»»bolder»»>1</span>
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
WithSelection.Find
.Text = «</span><span class=»»bolder»»>»
.Replacement.Text=»»
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
End Sub

Двойные кавычки в коде – это не опечатка, так как именно таким образом осуществляется экранирование кавычек в VBA-скриптах.

Аналогичным способом вы можете дополнить макрос, например, обрамляя курсив тегами <i></i> или <blockquote></blockquote>.

Автоматическая простановка тегов заголовков

Чтобы автоматически расставить заголовки H1, H2, H3, H4, H5 и H6, необходимо задать для них размер шрифта, отличный от остального текста. Например, если вы пишите статью 12 размером, можно выделять заголовки 16 размером. Тогда опция автозамены будет выглядеть так:

  • в поле «Найти» (<*>),
  • в поле «Заменить на» <h2>1</h2>,
  • ставим галочку «Подстановочные знаки»,
  • в разделе «Формат» указываем 16 шрифт.

Простановка тегов H1

Затем заменяем лишние «</h2> <h2>».

Макрос будет выглядеть следующим образом:

Selection.Find.ClearFormatting
Selection.Find.Font.Size=18
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»(<*>)»
.Replacement.Text=»<h2>1</h2>»
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Size=16
Selection.Find.Replacement.ClearFormatting
WithSelection.Find
.Text=»</h2><h2>»
.Replacement.Text=»»
.Forward=True
.Wrap=wdFindContinue
.Format=True
.MatchCase=False
.MatchWholeWord=False
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
Selection.Find.ExecuteReplace:=wdReplaceAll
EndSub

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

Содержание

  • Области использования макросов:
  • Включение макросов
  • Запись макросов
  • Изменение комбинаций клавиш для макроса
  • Запуск макроса
  • Создание нового макроса
  • Вопросы и ответы

Как создать макрос в Ворде

Макрос — это набор определенных действий, команд и/или инструкций, которые сгруппированы в одну целостную команду, обеспечивающую автоматическое выполнение той или иной задачи. Если вы активный пользователь MS Word, вы тоже можете автоматизировать часто выполняемые задачи, создав для них соответствующие макросы.

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

Области использования макросов:

    1. Ускорение часто выполняемых операций. В числе таковых форматирование и редактирование.

    2. Объединение нескольких команд в целостное действие “от и до”. Например, с помощью макроса можно вставить таблицу заданного размера с необходимым количеством строк и столбцов.

    3. Упрощение доступа к некоторым параметрам и инструментам, расположенным в различных диалоговых окнах программы.

    4. Автоматизация сложных последовательностей действий.

Последовательность макросов может быть записана или создана с нуля путем введения кода в редактор Visual Basic на одноименном языке программирования.

Включение макросов

По умолчанию макросы доступны не во всех версиях MS Word, точнее, они просто не включены. Чтобы активировать их необходимо включить средства разработчика. После этого на панели управления программы появится вкладка “Разработчик”. О том, как это сделать, читайте ниже.

Примечание: В версиях программы, в которых макросы доступны изначально (например, Ворд 2016), средства для работы с ними находятся во вкладке “Вид” в группе “Макросы”.

Кнопка Макросы в Word

1. Откройте меню “Файл” (кнопка “Microsoft Office” ранее).

2. Выберите пункт “Параметры” (ранее “Параметры Word”).

3. Откройте в окне “Параметры” категорию “Основные” и перейдите в группе “Основные параметры работы”.

4. Установите галочку напротив пункта “Показывать вкладку “Разработчик” на ленте”.

5. На панели управления появится вкладка “Разработчик”, в которой и будет находиться пункт “Макросы”.

Lumpics.ru

Запись макросов

1. Во вкладке “Разработчик” или, в зависимости от используемой версии Ворда, во вкладке “Вид”, нажмите кнопку “Макросы” и выберите пункт “Запись макроса”.

Запись макроса в Word

2. Задайте имя для создаваемого макроса.

Окно Запись макроса в word

Примечание: Если вы, создавая новый макрос, даете ему точно такое же имя, как у встроенного в программу, действия, записанные вами в новый макрос, будут выполняться взамен стандартным. Для просмотра макросов, доступных в MS Word по умолчанию, в меню кнопки “Макросы” выберите “Команды Word”.

3. В пункте “Макрос доступен для” выберите то, для чего он будет доступен: шаблон или документ, в который его следует сохранить.

Выбор места для применения макроса в Word

    Совет: Если вы хотите, чтобы создаваемый макрос был доступен во всех документах, с которыми вы работаете в дальнейшем, выберите параметр “Normal.dotm”.

4. В поле “Описание” введите описание для создаваемого макроса.

Описание макроса в Word

5. Выполните одно из действий, указанных ниже:

  • Начните запись — чтобы приступить к началу записи макроса, не связывая его при этом с кнопкой на панели управления или комбинацией клавиш, нажмите “ОК”.
  • Создайте кнопку — чтобы связать создаваемый макрос с кнопкой, расположенной на панели управления, выполните следующее:
      • Нажмите “кнопке”;
      • Выберите документ или документы, в которых требуется добавить создаваемый макрос на панель быстрого доступа (раздел “Настройка панели быстрого доступа”);

    Параметры макроса в Word

      Совет: Чтобы создаваемый макрос был доступен для всех документов, выберите параметр “Normal.dotm”.

    Доступ к макросу в Word

    В окне “Макрос из” (ранее “Выбрать команды из”) выберите макрос, который следует записать, нажмите “Добавить”.

    Добавить макрос в Word

      • Если вы хотите настроить эту кнопку, нажмите “Изменить”;
      • Выберите подходящий символ для создаваемой кнопки в поле “Символ”;
      • Введите имя макроса, которое будет отображаться в дальнейшем в поле “Отображаемое имя”;
      • Для начала записи макроса дважды кликните по кнопке “ОК”.

    Запись макроса ОК в Word

    Символ, который вы выбрали, будет отображаться на панели быстрого доступа. При наведении указателя курсора на этот символ, будет отображаться его имя.

  • Назначьте сочетание клавиш — Для того, чтобы назначить комбинацию клавиш для создаваемого макроса, выполните следующие действия:
      • Кликните по кнопке “Клавишами” (ранее “Клавиатура”);

    Запись макроса клавишами в Word

      • В разделе “Команды” выберите макрос, который необходимо записать;

    Настройка клавиатуры в Word

      • В разделе “Новое сочетание клавиш” введите любую удобную для вас комбинацию, после чего нажмите кнопку “Назначить”;

    Настройка комбинаций клавиатуры в Word

      • Для начала записи макроса нажмите “Закрыть”.

    6. Выполните поочередно все те действия, которые необходимо включить в макрос.

    Примечание: Во время записи макроса нельзя использовать мышь для выделения текста, а вот для выбора команд и параметров нужно использовать именно ее. При необходимости, выделить текст можно с помощью клавиатуры.

    Урок: Горячие клавиши в Ворде

    7. Для остановки записи макроса нажмите “Остановить запись”, эта команда расположена в меню кнопки “Макросы” на панели управления.

    остановить запись макроса в Word

    Изменение комбинаций клавиш для макроса

    1. Откройте окно “Параметры” (меню “Файл” или кнопка “MS Office”).

    2. Выберите пункт “Настройка”.

    3. Нажмите на кнопку “Настройка”, расположенную рядом с полем “Сочетание клавиш”.

    4. В разделе “Категории” выберите “Макросы”.

    5. В открывшемся списке выберите макрос, который необходимо изменить.

    6. Кликните по полю “Новое сочетание клавиш” и нажмите клавиши или комбинацию клавиш, которые вы хотите назначить для конкретного макроса.

    Настройка клавиатуры в Word

    7. Убедитесь, что назначенное вами сочетание клавиш не используется для выполнения другой задачи (поле “Текущее сочетание”).

    8. В разделе “Сохранить изменения” выберите подходящий вариант (место) для сохранения места, где макрос будет запускаться.

    Сохранить Настройки клавиатуры в word

      Совет: Если вы хотите, чтобы макрос был доступен к использованию во всех документах, выберите параметр “Normal.dotm”.

    9. Нажмите “Закрыть”.

    Запуск макроса

    1. Нажмите на кнопку “Макросы” (вкладка “Вид” или “Разработчик”, в зависимости от используемой версии программы).

    Открыть макросы в Word

    2. Выберите макрос, который хотите запустить (список “Имя макроса”).

    3. Нажмите “Выполнить”.

    Выбор Макроса в Word

    Создание нового макроса

    1. Нажмите кнопку “Макросы”.

    Кнопка макросы в Word

    2. Задайте имя для нового макроса в соответствующем поле.

    Имя Макроса в Word

    3. В разделе “Макросы из” выберите шаблон или документ, для которого будет сохранен создаваемый макрос.

    Создать Макрос в Word

      Совет: Если вы хотите, чтобы макрос стал доступен во всех документах, выберите параметр “Normal.dotm”.

    4. Нажмите “Создать”. Будет открыт редактор Visual Basic, в котором и можно будет создать новый макрос на языке Visual Basic.

    Microsoft Visual Basic for Applications - Normal

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

    Содержание

    • Что такое включенные макросы в Ворд?
    • Что такое макросы в  Ворде и как с ними работать?
    • Что такое макрос в ворде 2007? Формула из Excel таблицы

    Приветствую на Fast-Wolker.ru!! В  сегодняшнем выпуске продолжим знакомство с созданием макросов уже  в приложении Microsoft Office Word. Все знакомы с ним; многим приходится набирать документы в этой программе.

    Документы чаще всего имеют одну и ту же структуру — мы берем шаблон правим его так как нам надо в одних и тех же местах — меняем даты,  имена, форматируем текст.

    То есть мы каждый раз делаем одни и те же операции с текстом, и чтобы их не делать каждый раз — можно  заставить компьютер совершать их автоматически. Для этого в МS Word можно применять макрокоманды (или макросы) которые вы самостоятельно записываете в виде программы на языке VBA, который встроен в Word.

    Что такое включенные макросы в Ворд?

    А сейчас разберемся подробно, что за «макросы», как их включать. Начнем изучение на примере Office Word 2007, так как для многих он по прежнему остается самым привычным пакетом. Включать макросы нужно через меню «Файл» -«Параметры Word».

    Дело в том, что настройки макросов в программе по умолчанию выключены, либо заданы такие настройки безопасности, что работать с  полноценно с макрокомандами Вы не сможете. Когда Вы создаете макросы, Вы по сути становитесь программистом.

    Можно не только самому их писать, но и находить уже готовые. Среда VBA позволяет работать не только в пределах MS OFFICE. Можно создавать полноценные  программы, которые  получают доступ системным файлам на компьютере,  можно нанести вред. Этим пользуются злоумышленники.

    Включаем первую настройку на ленте. Она сделает видимой вкладку «Разработчик» и позволит работать с макрокомандами и запускать редактор VBA:

    Следующая настройка отвечает за безопасность. Здесь же, переходим в «Центр управления безопасностью»..

    …»Парамеры центра» отвечает за запуск наших будущих программ. Вы можете настроить так как  нужно вам. Настройка «Доверять доступ к объектной модели VBA» позволит  пользоваться уже готовыми проектами VBA, например скачанными из Интернет.

    Сторонние макрокоманды и проекты VBA перед запуском всегда проверяйте на вирусы!

    Стабильный MS Office 2007 морально устарел и  поддержка его прекращена. Нужно уметь включать режим разработчика и в поздних версиях. Они более функциональны и для серьезной работы лучше использовать их.  В  Word 2016  включаем вкладку «Разработчик». Для этого так же в меню «Файл» переходим в «Параметры» и затем «Настройки Ленты»:

       Не забываем сделать настройки безопасности так как делали до этого. Теперь, когда все настройки сделаны можно работать далее.

    Что такое макросы в  Ворде и как с ними работать?

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

    Но Вы получаете возможность изучать язык, если вас это дело увлечет. Создание макросов — это введение в программирование. VBA позволяет создавать для себя мощные инструменты при работе с  текстовыми и табличными документами для решения многих задач в  привычном виде .

    Тем, кто после прочтения статьи заинтересуется и  захочет начать изучать язык VBA самостоятельно в помощь книга.

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

    Чтобы понравившийся документ после распечатывания стал полноценной привычной брошюрой — нужен макрос. А точнее написанный в VBA программный код, он вам и позволит распечатать ваш документ в виде брошюры, в которой будет правильное расположение текста и нумерация страниц.

    Эту программу для ознакомления качаем тут. Вам останется распечатать и сшить брошюру и вот у вас книга готова 🙂

    Но чаще всего мы используем макросы на работе при составлении документов. Нужно форматировать текст, менять его размер, менять даты, имена на другие. Это ответственно и занимает время. И здесь наши  знания могут очень пригодится.

    Для начала покажу демонстрационный пример — как работает макрос. У нас есть шаблон договора, который нужно подготовить для заполнения. Задача: открыть документ, убрать ненужные нам элементы из текста автоматически:

    Согласитесь, убирать вручную каждый раз пустые поля (выделено желтым) на нескольких страницах утомительно, поэтому мы  для примера прибегнем к помощи макроса.  Итак, запускаю Ворд 2016, начинаю записывать макрос:

    Указываем имя нашего макроса (без пробелов),  доступ делаю из шаблона Normal.doth. Такой выбор позволит запускать выполнение нашей макрокоманды из любого документа Word.

    Назначать макрос можно кнопке на панели инструментов или вызвать нажатием сочетания определенный клавиш, но мы этого делать пока не будем. Просто нажмем на «OK» и начнется запись наших действий. Предлагаю посмотреть на видео, что получилось, это будет нагляднее.

    Мы сделали самую простую операцию — замену текста во всем документе. Но, поизучав язык можно  пойти и далее —  отформатировать текст, сделать форму, в которой указываются все необходимые  данные договора (даты, номер, ФИО директора, должности, наименование организации, реквизиты и т .д.).

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

    Что такое макрос в ворде 2007? Формула из Excel таблицы

    Многие интересуются — как вставить формулы Excel в таблицу Word? Excel хорош при вычислениях но не удобен для работы с текстом, а таблицы Word не так привычны после  работы с Excel.

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

    Далее,  «рисуем»  таблицу так, как мы делаем это в Excel:

    Создавать Excel таблицу в Word с помощью макроса вышеописанным способом не получится — нужны дополнительные усилия. А что касается обычной Word таблицы — можно записывать макросы в случае создания сложных макетов таблиц.

    Можно попробовать записать создание таблицы в макрос любым из этих способов и посмотреть что получится. Лично я таблицы копирую прямо из Excel, а макросы записываю в Office 2016 — там мне удобнее работать со стилями и оформлением. Удачи в освоении программы!

    Время на прочтение
    2 мин

    Количество просмотров 28K

    Когда впервые я начал знакомство с Хабром, старшие товарищи строго настрого завещали мне следить за двойными пробелами и ошибками в текстах. В начале я не особо придавал этому значения, но после кучи минусов в карму, мое отношение к этому требованию скоропостижно изменилось. И вот совсем недавно моя хорошая питерская приятельница, не то чтобы гик Яна Харина, поделилась совершенно замечательным макросом. Надеюсь ее повествование от первого лица будет для вас полезным.

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

    Переживать о двойных пробелах — тот ещё перфекционизм, им не страдает 99% населения. Но если вы работаете с текстом (не только как пиарщик, журналист или редактор, но и, допустим, как продажник, пишущий КП), то позаботьтесь о его идеальном оформлении. Это выдаст в вас интеллигентного человека.

    Так выглядит текст до обработки: двойные пробелы, дефис вместо тире, длинное тире, путаница с кавычками.

    Подобные тексты часто попадают к редактору, их чистка может занимать очень много времени. Два нажатия сочетания клавиш Сtrl + «ё» (именно такое сочетание установлено у меня) — и текст оформлен аккуратно.

    Как это работает? С помощью простого макроса для Word, который легко установит даже с трудом понимающий слово «макрос» человек. Нужно скачать файл и следовать инструкции.

    Что умеет макрос:

    • менять двойные пробелы на одинарные;
    • заменять дефис на среднее тире, а длинное тире — на среднее;
    • заменять «ё» на «е»;
    • заменять кавычки-«лапки» на кавычки-«ёлочки»;
    • убирать неразрывные пробелы;
    • убирать пробел перед запятой, точкой, закрывающей скобкой.

    Полный список команд можно увидеть в тексте макроса. Команды связаны со стандартами моей прежней работы, их можно отдельно убрать, если вы любите букву «ё» или длинное тире, а также добавить свои.

    Пользуйтесь! И пусть ваши тексты будут выглядеть идеально!


    Пример 1 Макрос, обновляющий все поля
    при закрытии файла.

    Sub
    Autoclose()


    Выделяем всё. Аналогично нажатию С
    TRL
    + A

    Selection.WholeStory

    Обновляем
    всё,
    что
    выделено

    Selection.Fields.Update

    End
    Sub

    Имя
    Autoclose()позволит
    макросу выполняться автоматически
    при закрытии документа.

    Пример 2
    Иллюстрация «Если».Запрос о необходимости
    обновления полей в документе

    Sub
    primer3()


    primer3
    Макрос

    ‘ Макрос создан
    03.12.05

    ‘ задали переменную
    а (целого типа)

    Dim
    a
    As
    Integer

    a
    = MsgBox(«Обновить поля ?», vbOKCancel, «это
    мое окно сообщения»)

    ‘При нажатии
    на Ok функция возвратит 1 , в другом случае
    0.

    ‘Если а=1, то
    выделяем все и обновляем поля

    If
    a = 1 Then

    Selection.WholeStory

    Selection.Fields.Update

    End
    If

    End
    Sub

    Пример 3
    Иллюстрация использования окон ввода
    (диалога с пользователем)

    Sub
    запрос()

    ‘ запрос Макрос


    Макрос
    создан
    03.12.08

    Dim
    a As Double

    a
    = (InputBox(«Введите курс доллара :»,
    «Курс»))

    ‘ вызываем InputBox
    для получения курса доллара

    ‘ и присваеваем
    его переменной a

    If
    a > 40 Then

    MsgBox
    Не
    покупаем!!!»)

    Else
    MsgBox («
    УРА,
    покупаем!!!»)

    End
    If

    End
    Sub

    Пример
    4 Создание простого диалогового окна
    1

    Задание:

    • Ввести
      число

    • По
      нажатию кнопки прибавить к нему число
      10

    Действия
    пользователя:

    • создаем
      форму

    • «ставим»
      на
      нее
      элементы:
      2 Label, 2 TextBox, 1 CommandBotton

    • настраиваем
      работу кнопки CommandBotton
      (2 щелчка на ней → текст программы)

    Private
    Sub CommandButton1_Click()

    TextBox2
    = TextBox1 + 10

    End
    Sub

    • Создаем
      пустой макрос:

    Load
    UserForm1

    UserForm1.Show

    Теперь
    можно запускать этот макрос из любого
    документа.

    Пример
    5 Создание простого диалогового окна
    2

    Задание:

    • Ввести
      число

    • По
      нажатию кнопки, в зависимости от
      состояния флажка прибавить к нему число
      10 или оставить данное число без изменений

    Добавим
    на нашу форму флажок (Checkbox),
    он принимает всего 2 значения True/False,
    т.е:

    • включен
      -True

    • выключен
      -False

    Можно
    это учесть в программе, изменив
    соответствующую строку на

    If
    CheckBox1 = True Then

    TextBox2
    = TextBox1 + 10

    Else

    TextBox2
    =
    TextBox1

    End
    If

    Пример
    6 вывод приветствия при запуске
    Word.

    Sub
    AutoExec()

    ‘ Макрос4 Макрос

    ‘ Макрос создан
    23.10.2008

    ‘ Сообщение должно
    содержать имя, задаваемое по вводу. В
    случае не введения имени вывести другое
    произвольное сообщение приветствия.

    Dim
    name As String

    name
    = InputBox(«Введите
    ваше
    имя»,
    «Приветствие»)

    If
    name <> «» Then

    msgbox
    «Привет,
    » & name, vbInformation, «Приветствие»

    Else

    msgbox
    «Добрый день,незнакомец!» &
    name, vbOKOnly, «cообщение»

    End
    If

    End
    Sub

    В
    результате на экране будет

    одно
    из сообщений:

    Макросы в excel.

    Пример
    1 увеличение значений в выделенных
    ячейках на константу

    Sub
    Макрос1()

    ‘ Макрос1 Макрос


    Макрос
    записан
    06.11.2008

    Dim
    a, i, j, it, jt As Integer

    ‘Зададим
    окно ввода (диалог с пользователем)

    a
    = InputBox(«const», «Vvedite const»)

    ‘ вызываем InputBox
    для получения константы и присваиваем
    его переменной а.

    ‘Jt И it –размер
    выделенной области

    jt
    = Selection.Columns.Count

    it
    = Selection.Rows.Count

    ‘Изменение
    значений в ячейках

    For
    i = 1 To it

    For
    j = 1 To jt

    ‘к выделенным
    ячейкам прибавляется значение равное
    а

    Selection.Cells(i,
    j).Value = Selection.Cells(i, j).Value + a

    Next
    j

    Next
    i

    End
    Sub

    Пример
    2 В ячейку вводятся числа 1,2 или 3.
    Отобразить их значения прописью

    Sub
    Макрос1()

    ‘ Макрос1 Макрос

    ‘ Макрос записан
    06.11.2008

    If
    (ActiveCell.FormulaR1C1 = «1») Then ActiveCell.FormulaR1C1
    = «один»

    If
    (ActiveCell.FormulaR1C1 = «2») Then ActiveCell.FormulaR1C1
    = «два»

    If
    (ActiveCell.FormulaR1C1 = «3») Then ActiveCell.FormulaR1C1
    = «три»

    End
    Sub

    Пример
    3 Заполнение интервала ячеек случайными
    числами

    Sub
    StickRandom()

    Dim
    numRows As Integer, numCols As Integer

    Dim
    theRow As Integer, theCol As Integer

    ‘Определение
    размера текущего выбора.

    numRows
    = Selection.Rows.Count

    numCols
    = Selection.Columns.Count

    Randomize

    ‘Инициализация
    генератора случайных чисел

    For
    theRow = 1 To numRows

    For
    theCol = 1 To numCols

    Selection.Cells(theRow,
    theCol).Value = Int(Rnd * 100)

    Next
    theCol

    Next
    theRow

    End
    Sub

    Пример
    4 Вычисление среднего значения элементов
    массива

    Sub
    BlockAverage()

    Dim
    numRows As Integer, numCols As Integer

    Dim
    theRow As Integer, theCol As Integer

    Dim
    I As Integer, J As Integer

    Dim
    theAverage As Single, theSum As Single

    Dim
    myArray() As Single

    ‘Определение
    размера текущего выбора.

    numRows
    = Selection.Rows.Count

    numCols
    = Selection.Columns.Count

    ReDim
    myArray(numRows, numCols)

    ‘Копирование
    содержимого ячеек в массив.

    For
    theRow = 1 To numRows

    For
    theCol = 1 To numCols

    myArray(theRow,
    theCol) = Selection.Cells(theRow, theCol).Value

    Next
    theCol

    Next
    theRow

    ‘ Определение
    среднего арифметического элементов
    массива.

    theSum
    = 0

    For
    I = 1 To numRows

    For
    J = 1 To numCols

    theSum
    = theSum + myArray(I, J)

    Next
    J

    Next
    I

    theAverage
    = theSum / (numRows * numCols)

    MsgBox
    «Среднее
    арифметическое
    = » & Str(theAverage)

    End
    Sub

    Пример
    5 Расчет возраста в днях

    Sub
    AgeCalculator()

    Dim
    theReply As String, thePrompt As String

    Dim
    theTitle As String, theDefault As String

    Dim
    theAge As Single, OKFlag As Boolean

    Dim
    theName As String

    thePrompt
    = «Введите
    Ваше
    имя,
    пожалуйста.»

    theTitle
    = «Персональный информационный диалог»

    theDefault
    = «Имя»

    ‘Цикл ожидания
    ввода имени пользователя.

    Do

    theReply
    = InputBox(thePrompt, theTitle, theDefault)

    If
    theReply = «» Then Exit Sub

    Нажата
    командная
    кнопка
    Cancel.

    theReply
    = Trim(theReply)

    ‘Удаление
    пробелов с двух сторон строки.

    ‘Проверка на
    строку пробелов или пробел в строке.

    If
    (theReply = «») Or (InStr(theReply, » «) <>
    0) Then

    MsgBox
    «Непонятно, попробуйте еще раз,
    пожалуйста.», , theTitle

    OKFlag
    = False

    ElseIf
    theReply = theDefault Then Пользователь
    просто
    нажал
    Enter

    MsgBox
    «Напечатайте что-нибудь и попробуйте
    еще раз, пожалуйста.»

    OKFlag
    = False

    Else

    ‘Ввод завершен
    нормально.

    theName
    = theReply

    OKFlag
    = True

    End
    If

    Loop
    Until OKFlag

    ‘Теперь
    получим имя пользователя.

    thePrompt
    = «Здравствуйте, » & theReply & «.
    Введите Ваш возраст, пожалуйста.»

    ‘Цикл
    ожидания ввода корректного числа.

    Do

    theReply
    = InputBox(thePrompt, theTitle)

    If
    theReply = «» Then Exit Sub

    Нажата
    командная
    кнопка
    Cancel.

    theAge
    = Val(theReply)

    ‘Преобразование
    строки в число.

    If
    Not IsNumeric(theReply) Then

    ‘Введено не число.

    MsgBox
    «Введите число и попробуйте еще раз,
    пожалуйста.», , theTitle

    OKFlag
    = False

    ‘Проверка
    корректности введенного числа.

    ElseIf
    (theAge < 1) Or (theAge > 120) Then

    MsgBox
    «Не
    верится,
    чтобы
    Вам
    было
    » & Str(theAge) & _

    «лет.
    Попробуйте еще раз, пожалуйста.», ,
    theTitle

    OKFlag
    = False

    Else

    ‘Похоже на
    возраст.

    OKFlag
    = True

    End
    If

    Loop
    Until OKFlag

    ‘Расчет
    приблизительного возраста в днях.

    MsgBox
    «Вам приблизительно » & Format(theAge
    * 365, «#,###») & » дней.», , theTitle

    End
    Sub

    Пример
    6 Сложение 2-х вводимых чисел

    Sub
    prim4()

    a
    = InputBox(«введите а», «ввод данных»,
    1)

    b
    = InputBox(«введите в», «ввод данных»,
    2)

    c
    = Val(a) + Val(b)

    MsgBox
    c

    End
    Sub

    Пример
    7 Вычисление квадрата чисел от 1 до 10

    Sub
    prim5()

    For
    I = 1 To 10 Step 1

    n
    = I * I

    MsgBox
    «I = » & Str(I) & » n = » & Str(n)

    Next
    I

    End
    Sub

    10

    Сидоров
    В.В., Перепухова И.Г.

    Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #

    Макросы в Word — это такая полезная штука, которую просто обязан знать каждый, кто много работает с текстами.

    Предысторию написания данной статьи, а также ее полезность можно оценить по видеоролику.

    Макросы — теория

    Теперь немного теории. Как известно, в текстовом редакторе Word есть очень полезная функция «Найти и заменить« (вызывается через сочетание клавиш Ctrl+H или меню «Правка» -> «Заменить…»), которой, к сожалению, пользуются не так часто. Но еще реже используют данную функцию в режиме «Подстановочные знаки«.

    Галочка "подстановочные знаки" (макросы)

    А между тем данное умение может принести неоценимую пользу. Свое знакомство с подстановочными знаками и их изучение можно начать со статьи Сергея Хозяинова (будет полезна для новичков).

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

    Макросы — это такие полезные штуки, которые позволяют автоматизировать часто выполняемые операции (в случае примера на видео, это форматирование текста). О способах записи и создания макросов можно найти тысячи статей на просторах Интернета. Нас же будет интересовать вариант, при котором макрос записывается вручную во встроенном в Word редакторе Visual Basic. Суть использования макросов мною основана на принципе конструктора: макрос состоит из набора кирпичиков-функций, которые заранее прописаны и могут размещаться в любой требуемой последовательности. Каждая же из функций является действием, либо набором действий, она имеет свое уникальное имя. В макросе же надо лишь указать имя функции для ее вызова.

    Макросы — практика

    Показать скрытое содержание
    Function Tire()
    ‘заменяет дефис в начале абзаца на тире
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «^p- »
    .Replacement.Text = «^p^= »
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function Tire2()
    ‘заменяет дефис окруженный пробелами на тире
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = » — »
    .Replacement.Text = » ^= »
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function Defis()
    ‘заменяет тире в начале абзаца на дефис
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «^p^=»
    .Replacement.Text = «^p-»
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function Prob()
    ‘заменяет множественные пробелы на одиночный
    ‘удаляет множественные и одиночные пробелы в начале абзаца
    ‘удаляет множественные и одиночные пробелы в конце абзаца
    ‘удаляет знаки абзаца идущие до текста в начале документа
    ‘и знаки абзаца идущие после текста в конце документа
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .MatchWildcards = False
    .Execute «^w», , , , , 0, , , 0, » «, 2
    .Execute «^p^w», , , , 0, , , , 0, «^p», 2
    .Execute «^w^p», , , , 0, , , , 0, «^p», 2
    End With
    If ActiveDocument.Paragraphs.Count > 1 Then
    Do While ActiveDocument.Paragraphs.Last.Range.Text = Chr(13) And _
    ActiveDocument.Paragraphs.Count > 1
    ActiveDocument.Paragraphs.Last.Range.Delete
    Loop
    End If
    Selection.HomeKey wdStory
    While Selection.Paragraphs.First.Range.Characters.Count = 1
    Selection.Paragraphs.First.Range.Delete
    Wend
    End Function
    Function Format()
    ‘весь текст делает 14 размером TimesNewRoman
    ‘с 1,5 интервалом и выравнивает его по ширине
    ActiveDocument.Content.Font.Name = «Times New Roman»
    ActiveDocument.Content.Font.Size = 14
    ActiveDocument.Content.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
    ActiveDocument.Content.ParagraphFormat.Alignment = wdAlignParagraphJustify
    Selection.HomeKey wdStory
    End Function
    Function Format2()
    ‘весь текст делает 11 размером Arial
    ‘с 1,5 интервалом и выравнивает его по ширине
    ActiveDocument.Content.Font.Name = «Arial»
    ActiveDocument.Content.Font.Size = 11
    ActiveDocument.Content.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
    ActiveDocument.Content.ParagraphFormat.Alignment = wdAlignParagraphJustify
    Selection.HomeKey wdStory
    End Function
    Function Zagol()
    ‘делает заголовок (первый абзац) документа жирным
    ‘и выравнивает его по центру
    ActiveDocument.Paragraphs(1).Range.Select
    Selection.Font.Bold = True
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Selection.HomeKey wdStory
    End Function
    Function Symb()
    ‘Подсчитывает количество символов в документе
    ‘и выводит сообщение
    spacecount = ActiveDocument.Content.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces)
    MsgBox «В тексте содержится символов (включая пробелы) — » & spacecount & » »
    End Function
    Function Krasn()
    ‘Делает красный шрифт у выделенного слова
    Selection.Font.Color = wdColorRed
    End Function
    Function Intjyr()
    ‘Выделяет жирным все вопросы «И:»
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «(^0013^0013И:)(*)(^0013)»
    .MatchWildcards = True
    .Forward = True
    .Replacement.Text = «123″
    .Replacement.Font.Bold = True
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function One_to_Two()
    ‘Разделяет одно предложение на два (перед выполнением курсор ставить после запятой)
    Selection.TypeBackspace
    Selection.TypeText Text:=».»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Range.Case = wdTitleSentence
    End Function
    Function Two_to_One()
    ‘Склеивает два предложения в одно (перед выполнением курсор ставить после точки)
    Selection.TypeBackspace
    Selection.TypeText Text:=»,»
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Range.Case = wdTitleSentence
    End Function
    Function Nimerstr()
    ‘Вставляет нумерацию страниц справа вверху
    Selection.Sections(1).Headers(1).PageNumbers.Add PageNumberAlignment:= _
    wdAlignPageNumberRight, FirstPage:=True
    End Function
    Function MastifTime()
    ‘Находит и заменяет тайм-коды в обычном формате (чч:мм:сс), на формат
    ‘требуемый для Мастифа (чч-мм-сс)
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «(^0013)(([0-9]@:[0-9]@:[0-9]@))»
    .MatchWildcards = True
    .Forward = True
    .Replacement.Text = «12»
    .Execute Replace:=wdReplaceAll
    End With
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «:([0-9]@):»
    .MatchWildcards = True
    .Forward = True
    .Replacement.Text = «-1-»
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function Troetoch()
    ‘Заменяет три точки идущие подряд на знак троеточия
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «…»
    .Replacement.Text = «…»
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
    End With
    End Function
    Function Tehnik()
    ‘Ищет в тексте технические надписи в скобках
    ‘если они прописаны без точки, то перед закрывающей скобкой ставится точка,
    ‘если они написаны (случайно) не курсивом, то выделяются им
    Dim MyCollection As New Collection
    With MyCollection
    .Add («Аплодисменты»)
    .Add («Говорят одновременно»)
    .Add («Дефект записи»)
    .Add («Дефект звука»)
    .Add («Смена кадра»)
    .Add («Обрыв записи»)
    .Add («Техническая съемка»)
    .Add («Техническая реплика»)
    .Add («Технический разговор»)
    .Add («Конец просмотра видеоролика»)
    .Add («Начало просмотра видеоролика»)
    .Add («Просмотр видеоролика»)
    .Add («Возобновление тайм-кода»)
    .Add («Остановка тайм-кода»)
    .Add («Смена тайм-кода»)
    .Add («Смех»)
    .Add («Смеется»)
    .Add («Кашель»)
    .Add («Кашляет»)
    End With
    Dim i As Integer
    For i = 1 To MyCollection.Count
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «((» & MyCollection.Item(i) & «))»
    .MatchWildcards = True
    .Forward = True
    .Replacement.Text = «(1.)»
    .Replacement.Font.Italic = True
    .Execute Replace:=wdReplaceAll
    End With
    ActiveDocument.Content.Find.ClearFormatting
    ActiveDocument.Content.Find.Replacement.ClearFormatting
    With ActiveDocument.Content.Find
    .Text = «((» & MyCollection.Item(i) & «.))»
    .MatchWildcards = True
    .Forward = True
    .Replacement.Text = «(1)»
    .Replacement.Font.Italic = True
    .Execute Replace:=wdReplaceAll
    End With
    Next i
    End Function
    Sub Zamena()
    ‘ Комплекс последовательных функций при форматировании работ всех видов кроме Первого канала.
    Prob
    Tire2
    Tire
    Troetoch
    Nimerstr
    Tehnik
    Symb
    End Function
    Sub Zamena2()
    ‘ Комплекс последовательных функций при форматировании работ Первого канала.
    Prob
    Defis
    Tire2
    Troetoch
    Nimerstr
    Tehnik
    Symb
    End Function
    Sub ФОРМАТ()
    Format
    Prob
    Tire2
    Tire
    Troetoch
    Intjyr
    Tehnik
    Nimerstr
    Zagol
    Symb
    End Sub
    Sub МАСТИФ()
    Format2
    Prob
    Intjyr
    Tehnik
    MastifTime
    Nimerstr
    Zagol
    Symb
    End Sub

    Прописав это и сохранив в шаблоне «Normal.dot« можно получить доступ к этим макросам из любого документа. Вызывается окно выбора макросов горячей клавишей Alt+F8.

    Я предпочитаю использовать кнопки на панели инструментов. Поместить на нее кнопку и привязать к ней макрос очень легко. Об этом доступно написано в данной статье.

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

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