Приклади макросів Word та підручник з VBA

Ласкаво просимо в наш мега-посібник Word VBA / макроси!

Ця сторінка містить:

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

Можливо, вас також зацікавить наш Інтерактивний підручник з VBA для Excel. Хоча деякі приклади / вправи є специфічними для Excel VBA, більша частина вмісту є загальною для всіх VBA, і вам може бути корисно вивчити такі поняття, як If Statements, Loops, MessageBoxes тощо.

VBA PDF (безкоштовне завантаження)

Завантажте наш безкоштовний посібник Microsoft Word VBA! Або підручники VBA для інших офісних програм!

Завантажити

Приклади Word VBA "CheatSheet"

Нижче ви знайдете прості приклади коду VBA для роботи з Microsoft Word.

Виберіть / Перейти

ОписКод VBABackspaceSelection.TypeBackspaceВиберіть Весь документВибір. Одиниця домашнього ключа: = wdStory
РозширенняКопіюватиВибір. КопіюватиВидалитиВибір. Видалити одиницю: = wdCharacter, Count: = 1Вставити післяSelection.InsertAfter “text”Початок лініїВибір.Одиниця домашнього ключа: = wdLineКінець лініїВибір.Одиниця кінцевого ключа: = wdLineВставитиВибір. ПастаВибрати всеВибір. Ціла історіяВиберіть Весь рядокSelection.EndKey Unit: = wdLine, Extend: = wdExtendПеремістити абзац вгоруВибір. Одиниця переміщення: = wdParagraph, кількість: = 1Переміщення на один символ вправоВибір. Одиниця переміщення: = wdCharacter, кількість: = 1Перемістити одну клітинку праворуч у таблиціВибір.Одиниця переміщення: = wdCellПерейти до початку документаВибір. Одиниця домашнього ключа: = wdStoryПерейти до кінця документаВибір. Одиниця кінцевого ключа: = wdStoryПерейдіть на сторінку 1Selection.GoTo What: = wdGoToPage, which: = wdGoToNext, Name: = ”1 ″Перейти до початку сторінкиSelection.GoTo What: = wdGoToBookmark, Назва: = ”\ Сторінка”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Повернутися на початок

Закладки

ОписКод VBAДодатиЗ ActiveDocument.Закладками
.Додати діапазон: = Вибір.Діапазон, Назва: = ”Ім'я”
.DefaultSorting = wdSortByName
.ShowHidden = Неправда
Закінчити зРахуватиDim n як ціле число
n = ActiveDocument.Bookmarks.CountВидалитиActiveDocument.Bookmarks (“BookmarkName”). ВидалитиІснує?Якщо ActiveDocument.Bookmarks.Exists (“BookmarkName”) = Істина
'Робити щось
Закінчити ЯкщоЙти доSelection.GoTo What: = wdGoToBookmark, Name: = ”Назва закладки”ВиберітьActiveDocument.Bookmarks (“BookmarkName”). ВиберітьЗамінити текстSelection.GoTo What: = wdGoToBookmark, Name: = ”Назва закладки”
Вибір. Видалити одиницю: = wdCharacter, Count: = 1
Selection.Insert Після “New Text”
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Назва: = ”Назва закладки”

Повернутися на початок

Документ

ОписКод VBAАктивуватиДокументи ("Приклад.doc"). АктивуйтеДодати до змінноїDim doc як документ
Встановити doc = Documents.AddДодатиДокументи. ДодДодати (з іншого документа)Documents.Add Template: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = НеправдаЗакритиДокументи ("Приклад.doc"). ЗакритиЗакрити - Зберегти зміниДокументи (“Приклад.doc”). Закрийте SaveChanges: = wdSaveChangesЗакрити - Не зберігатиДокументи (“Приклад.doc”). Закрийте SaveChanges: = wdDoNotSaveChangesЗакрити - запропонувати зберегтиДокументи (“Приклад.doc”). Закрийте SaveChanges: = wdPromptToSaveChanges

Повернутися на початок

Колонки

ОписКод VBAЗберегти якДокументи ("Example.doc"). SaveAs ("C: \ Example \ Example.doc")ЗберегтиДокументи ("Приклад.doc"). ЗберегтиЗахищатиДокументи ("Приклад.doc"). Захистити пароль: = "пароль"Зняти захистДокументи ("Приклад.doc"). Зняти захист пароля: = "пароль"Кількість сторінокDim varNumberPages як Variant
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)ДрукДокументи (“Приклад.doc”). Друк

Повернутися на початок

Втомилися від пошуку прикладів коду VBA? Спробуйте AutoMacro!

Шрифт

ОписКод VBAРозмірSelection.Font.Size = 12ЖирнийSelection.Font.Bold = ПравдаКурсивSelection.Font.Italic = ПравдаПідкреслитиSelection.Font.Underline = wdUnderlineSingleУсі ковпачкиSelection.Font.AllCaps = ПравдаКолірSelection.Font.TextColor = vbRedНазваSelection.Font.Name = “Абаді”ІндексSelection.Font.Subscript = ІстинаSuperScriptSelection.Font.Superscript = ІстинаКолір виділенняSelection.Range.HighlightColorIndex = wdYellowСтильSelection.Style = ActiveDocument.Styles (“Звичайний”)

Повернутися на початок

Вставити

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

Повернутися на початок

Петлі

ОписКод VBAРобіть до кінця документаЗробити до ActiveDocument.Bookmarks (“\ Sel”) = ActiveDocument.Bookmarks (“\ EndOfDoc”)
'Робити щось
ПідпДля кожного документа в ДокументахDim doc як документ
ForEach doc У Документах
'Робити щось
Наступний докЦикличні абзациПідпункт через абзаци
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 До iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Далі i

Повернутися на початок

Пункт

ОписКод VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = ІстинаKeepWithNextSelection.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
Далі i

Повернутися на початок

Посібник з макросу Word VBA

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

Примітка: Якщо ви новачок у макросах / 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 Додатковий приклад WordMacroExample ()'Відкрийте документ і призначте для змінноїDim oDoc як документВстановіть oDoc = Documents.Open ("c: \ Користувачі \ хтось \ NewDocument.docx")'Напишіть ДокуSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Зберегти та закрити DocoDoc.ЗберегтиoDoc.ЗакритиEnd Sub

Основи макросу Word

Весь код VBA повинен зберігатися в таких процедурах. Щоб створити процедуру у VBA, введіть “Sub WordMacroExample” (де “WordMacroExample” - бажане ім’я макросу) та натисніть ENTER. VBA автоматично додасть дужки та End Sub.

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

Під час взаємодії з Microsoft Word у VBA ви часто звертаєтесь до «Об’єктів» Word. Найпоширеніші об’єкти:

Об'єкт програми - Сам Microsoft Word

Об'єкт документа - документ Word

Об'єкт діапазону - Частина документа Word

Об'єкт виділення - Вибраний діапазон або розташування курсору.

Застосування

Додаток є об'єктом "верхнього рівня". Через нього можна отримати доступ до всіх інших об’єктів у Word.

Окрім доступу до інших об’єктів Word, можна застосувати параметри “рівня програми”:

1 Application.Options.AllowDragAndDrop = Правда

Ось приклад доступу до "Вибору" "Windows (1)" за допомогою програми:

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

Однак до найпоширеніших об’єктів Word можна отримати доступ безпосередньо, не вводячи повної ієрархії. Тому замість цього ви можете (і повинні) просто ввести:

1 Вибір.Символи.Кількість

Документи

ActiveDocument

Часто у вас буде відкрито два або більше документів у Word, і вам потрібно буде вказати, з яким конкретним документом Word працювати. Один із способів вказати, який документ використовувати ActiveDocument. Наприклад:

1 ActiveDocument.PrintOut

… Надрукує ActiveDocument. ActiveDocument - це документ у Word, який має "фокус"

Щоб переключити ActiveDocument, скористайтеся командою Активувати:

1 Документи ("Приклад.docx"). Активуйте

ЦейДокумент

Замість того, щоб використовувати ActiveDocument для посилання на активний документ, ви можете використовувати ThisDocument для посилання на документ, де зберігається макрос. Цей документ ніколи не зміниться.

1 ThisDocument.PrintOut

Змінні документа

Однак для складніших макросів важко відстежувати активний документ. Також може викликати розчарування перемикання між документами.

Замість цього можна використовувати змінні документа.

Цей макрос призначить змінну ActiveDocument, а потім роздрукує документ за допомогою змінної:

12345 Sub VarExample ()Dim oDoc як документВстановіть oDoc = ActiveDocumentoDoc.PrintOutEnd Sub

Методи документування

Відкрити документ

Щоб відкрити документ 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:

1 Документи. Дод

Ми можемо доручити 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.Save

або Зберегти Як:

1 ActiveDocument.SaveAs Ім'я файлу: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument

Закрити документ

Щоб закрити документ і зберегти зміни:

1 ActiveDocument.Close wdSaveChanges

або без збереження змін:

1 ActiveDocument.Close wdDoNotSaveChanges

Роздрукувати документ

Буде надруковано активний документ:

1 ActiveDocument.PrintOut

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

Діапазон та Вибір є, мабуть, найважливішими об'єктами Word VBA, безумовно, найбільш використовуваними.

Діапазон відноситься до певної частини документа, зазвичай, але не обов’язково, до тексту.

Вибір посилається на виділений текст (або інший об’єкт, наприклад малюнки) або, якщо нічого не виділено, на точку вставки.

Пункти представляють абзаци в документі. Це менш важливо, ніж звучить, оскільки ви не можете безпосередньо отримати доступ до тексту абзацу (вам потрібно отримати доступ до певного діапазону абзаців, щоб внести зміни).

Діапазон

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

12 Зменшити діапазон як діапазонВстановіть oRange = ActiveDocument.Content

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

Інший приклад, цей діапазон буде посилатися на перше слово в документі:

12 Зменшити діапазон як діапазонВстановити oRange = ActiveDocument.Range.Words (1)

Зазвичай, ви хочете отримати діапазон, який посилається на певну частину документа, а потім змінити його.

У наступному прикладі ми зробимо перше слово другого абзацу жирним:

123 Зменшити діапазон як діапазонВстановити oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = Правда

Встановити текст діапазону

Щоб встановити текстове значення діапазону:

123 Зменшити діапазон як діапазонВстановити oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = “Привіт”

(Порада: зверніть увагу на пробіл після “Hello”. Оскільки об’єкт word містить пробіл за словом, просто “hello” ми отримаємо “Hellonext word”)

Є сотні речей, які ви можете робити з діапазонами. Лише кілька прикладів (вони припускають, що ви вже зробили об’єктну змінну oДіапазон стосовно сфери інтересів):

Змінити шрифт

1 oRange.Font.Name = "Arial"

Відобразити у вікні повідомлень кількість символів у певному діапазоні

1 MsgBox oRange.Characters.Count

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

1 oRange.InsertПеред "це вставлений текст"

Додайте виноску до діапазону

12 ActiveDocument.Footnotes.Add Range: = oRange, _Текст: = "Докладніше на 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 = ПравдаІнакшеMsgBox "Вам потрібно виділити певний текст."Закінчити Якщо

Під час роботи з об’єктом Виділення ми хочемо розмістити точку вставки на певному місці та видавати команди, починаючи з цієї точки.

Початок документу:

1 Вибір.Одиниця домашнього ключа: = wdStory, Розширення: = wdMove

Початок поточного рядка:

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

Параметр Extend wdMove переміщує точку вставки. Замість цього ви можете скористатися wdExtend, який виділить весь текст між поточною точкою вставки.

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

Перемістити виділення

Найбільш корисним методом зміни положення точки вставки є Переміщення. Щоб перемістити виділення на два символи вперед:

1 Вибір. Одиниця переміщення: = wdCharacter, Count: = 2

щоб перемістити його назад, використовуйте мінусове число для параметра Count:

1 Вибір. Одиниця переміщення: = wdCharacter, Count: =-2

Параметр одиниці може бути wdCharacter, wdWord, wdLine або більше (використовуйте довідку Word VBA, щоб побачити інших).

Щоб перемістити слова замість цього:

1 Вибір. Переміщення одиниці: = wdWord, кількість: = 2

З виділенням легше працювати (порівняно з діапазонами), оскільки воно схоже на робота, що використовує Word, імітуючи користувача користувача. Там, де знаходиться точка вставки - певна дія відбудеться. Але це означає, що ви повинні подбати про місце вставки! Це нелегко після багатьох кроків у коді. В іншому випадку Word змінить текст у не потрібному місці.

Якщо вам потрібна якась властивість або метод, недоступний у об’єкті виділення, ви завжди можете легко отримати діапазон, пов’язаний із виділенням:

1 Встановити oRange = Вибір. Діапазон

ПОРАДА: Використання Вибір часто простіше, ніж використання діапазонів, але також набагато повільніше (важливо, коли ви маєте справу з великими документами)

Пункти

Ви не можете безпосередньо використовувати об’єкт 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 = Істина

Зробіть абзац по центру:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

ДУЖЕ корисно привласнити певний абзац змінній об’єкта. Якщо ми призначаємо певний абзац змінній, нам не варто турбуватися, якщо перший абзац стане другим, тому що ми вставили один абзац перед ним:

12 dim oPara як абзацВстановіть oPara = Selection.Paragraphs (1) 'тут ми призначаємо змінний перший абзац поточного виділення

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

1234567 Підпункт Приклад ()Dim oPara Як абзацВстановити oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Вставити абзацMsgBox oPara.Range.TextEnd Sub

Об'єкт абзацу дуже часто використовується в циклах:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara Як абзацДля кожного oPara в ActiveDocument.Paragraphs'зроби з цим щось. Ми просто покажемо'текст абзацу, якщо його стиль "Заголовок 4"Якщо oPara.Style = "Заголовок 4" ТодіMsgBox oPara.Range.TextЗакінчити ЯкщоДалі oParaEnd Sub

Висновок підручника Word VBA

Цей підручник охопив основи 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 або Developer> Visual Basic)
2. Перейдіть до пункту Вставити> Модуль, щоб створити модуль коду
3. Введіть "Sub HelloWorld" і натисніть Enter
4. Між рядками "Sub HelloWorld" та "End Sub" введіть "MsgBox" Hello World! "
5. Ви створили макрос!
6. Тепер натисніть «F5», щоб запустити макрос

wave wave wave wave wave