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

Добре дошли в нашето мега-ръководство за Word VBA / макроси!

Тази страница съдържа:

    1. Word VBA Tutorial PDF (Безплатно изтегляне)
    2. Word VBA „Cheat Sheet“, съдържащ списък с най -често използваните фрагменти от код на 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.

Изберете / Отидете на

ОписаниеVBA кодBackspaceSelection.TypeBackspaceИзберете Цял документSelection.HomeKey Unit: = wdStory
Избор.РазширяванекопиеИзбор. КопиранеИзтрийИзбор. Изтриване на единица: = wdCharacter, Брой: = 1Вмъкване следSelection.InsertAfter “text”Начало на линиятаSelection.HomeKey Unit: = wdLineКрай на линиятаSelection.EndKey Единица: = wdLineПоставетеИзбор.ПастаИзбери всичкоИзбор. Цяла историяИзберете Цял редSelection.EndKey Unit: = wdLine, Extend: = wdExtendПреместване на абзаца нагореИзбор. Единица за преместване: = wdParagraph, Брой: = 1Преместване надясно с един знакИзбор.MoveRight Единица: = wdCharacter, Count: = 1Преместване надясно на една клетка в таблицаИзбор.MoveRight Единица: = wdCellОтидете в началото на DocSelection.HomeKey Unit: = wdStoryОтидете до края на DocSelection.EndKey Unit: = wdStoryОтидете на страница 1Selection.GoTo What: = wdGoToPage, Кое: = wdGoToNext, Име: = ”1 ″Отидете в началото на страницатаSelection.GoTo What: = wdGoTo Bookmark, Name: = ”\ Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Върнете се в началото

Отметки

ОписаниеVBA кодДобавянеС ActiveDocument. Bookmarks
.Добавяне на диапазон: = Selection.Range, Name: = ”Име”
.DefaultSorting = wdSortByName
.ShowHidden = False
Край сБрояDim n като Integer
n = ActiveDocument. Bookmarks.CountИзтрийActiveDocument.Bookmarks (“BookmarkName”). ИзтриванеСъществува ли?Ако ActiveDocument.Bookmarks.Exists (“BookmarkName”) = Истина тогава
'Направи нещо
Край АкоОтидете наSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”ИзберетеActiveDocument. Bookmarks (“BookmarkName”). ИзберетеЗамяна на текстSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Избор. Изтриване на единица: = wdCharacter, Брой: = 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: = FalseБлизоДокументи („Пример.doc“). ЗатворетеЗатвори - Запазване на променитеДокументи („Example.doc“). Затворете SaveChanges: = wdSaveChangesЗатвори - Не запазвайтеДокументи („Example.doc“). Затворете SaveChanges: = wdDoNotSaveChangesЗатваряне - Подканете за запазванеДокументи („Example.doc“). Затворете SaveChanges: = wdPromptToSaveChanges

Върнете се в началото

Колони

ОписаниеVBA кодЗапази катоДокументи („Example.doc“). SaveAs („C: \ Example \ Example.doc“)ЗапазванеДокументи („Пример.doc“). ЗапазванеЗащитетеДокументи („Пример.doc“). Защита на паролата: = „парола“Премахнете защитатаДокументи („Example.doc“). UnProtect Password: = „парола“Брой страници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)Вмъкване на разделSelection.TypeText Text: = vbTabВмъкване на текстSelection.TypeText Text: = „Всеки текст“Вмъкване на параграфSelection.TypeParagraphВмъкнете абзацSelection.InsertParagraph

Върнете се в началото

Цикли

ОписаниеVBA кодНаправете до края на DocНаправете до 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

Върнете се в началото

Параграф

ОписаниеVBA кодKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = ИстинаKeepWithNextSelection.ParagraphFormat.KeepWithNext = ИстинаSpace AfterSelection.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. Този урок ще ви научи как да пишете прост макрос и да взаимодействате с документи, диапазони, селекции и параграфи.

Забележка: Ако сте съвсем нови в Macros / VBA, може да намерите тази статия за полезна: Как да напишете VBA макроси от Scratch.

VBA е езикът за програмиране, използван за автоматизиране на програми на Microsoft Office, включително Word, Excel, Outlook, PowerPoint и Access.

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

Когато ти Запишете макрос, Word ще запише VBA код в макрос, което ще ви позволи да повторите действията си. Можете да видите списък на всички налични макроси от Изглед> Макроси.

След като запишете макрос, ще можете да редактирате макроса от списъка с макроси:

Когато щракнете редактиране, отваряте VBA редактор. С помощта на VBA Editor можете да редактирате записани макроси или да напишете макрос на Word от нулата. За достъп до VBA Editor използвайте пряк път ALT + F11 или щракнете Visual Basic от Лента за разработчици.

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

Това е прост пример за Word VBA макрос. Той изпълнява следните задачи:

  • Отваря документ на Word
  • Записва в документ
  • Затваря и записва документа на Word.
123456789101112131415 Под WordMacroExample ()„Отворете Doc & Assign to VariableDim oDoc като документЗадайте oDoc = Documents.Open ("c: \ Users \ някой \ NewDocument.docx")„Пиши на ДокSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph„Запазване и затваряне на ДокoDoc.SaveoDoc.ЗатвориEnd Sub

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

Целият VBA код трябва да се съхранява в процедури като тази. За да създадете процедура във VBA, въведете „Sub WordMacroExample“ (където „WordMacroExample“ е желаното от вас име на макрос) и натиснете ENTER. VBA автоматично ще добави скобите и End Sub.

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

Когато взаимодействате с Microsoft Word в VBA, често ще споменавате Word обекти. Най -често срещаните обекти са:

Обект на приложение - Самият Microsoft Word

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

Range Object - Част от документ на Word

Обект за избор - Избран диапазон или местоположение на курсора.

Приложение

Приложението е обект „най-високо ниво“. Всички други обекти в Word могат да бъдат достигнати чрез него.

В допълнение към достъпа до други обекти на Word, има и настройки на ниво приложение, които могат да бъдат приложени:

1 Application.Options.AllowDragAndDrop = Вярно

Това е пример за достъп до „Избор“ на „Windows (1)“ с в Приложението:

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

Въпреки това, най -често срещаните обекти на Word могат да бъдат достъпни директно, без да се въвежда пълната йерархия. Така че вместо това можете (и трябва) просто да напишете:

1 Избор.Символи.Брой

Документи

ActiveDocument

Често ще имате отворени два или повече документа в Word и ще трябва да посочите с кой конкретен документ на Word да взаимодействате. Един от начините да посочите кой документ да използвате ActiveDocument. Например:

1 ActiveDocument.PrintOut

… ще отпечата ActiveDocument. ActiveDocument е документът в Word, който „има фокус“

За да превключите ActiveDocument, използвайте командата Активиране:

1 Документи ("Example.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 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 = Вярно

Задайте текст на диапазона

За да зададете текстовата стойност на диапазон:

123 Dim oRange As RangeЗадайте oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = „Здравейте“

(Съвет: Обърнете внимание на интервала след „Здравей“. Тъй като обектът дума включва интервал след дума, само с „здравей“ ще получим „Hellonext дума“)

Има стотици неща, които можете да правите с диапазони. Само няколко примера (те предполагат, че вече сте станали обектна променлива 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.Параграфи (2) .Range.Изберете

След това можете да използвате обекта за избор, за да въведете текст:

1 Selection.TypeText "Някои текст"

Можем да напишем някои абзаци под „Някои текст“:

12 Selection.TypeText "Някои текст"Selection.TypeParagraph

Често е необходимо да се знае дали е избран някакъв текст или имаме само точка на вмъкване:

12345 Ако Selection.Type wdSelectionIP ТогаваSelection.Font.Bold = ВярноИначеMsgBox "Трябва да изберете текст."Край Ако

Когато работим с обект Selection, искаме да поставим точка на вмъкване на определено място и да издаваме команди, започвайки от тази точка.

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

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

Начало на текущия ред:

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

Разширеният параметър wdMove премества точката на вмъкване. Вместо това можете да използвате wdExtend, който ще избере целия текст между текущата точка на вмъкване.

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

Преместване на селекцията

Най -полезният метод за промяна на позицията на точката на вмъкване е Преместване. За да преместите селекцията с два знака напред:

1 Избор. Преместване на единица: = wdCharacter, Брой: = 2

за да го преместите назад, използвайте отрицателно число за параметъра Count:

1 Избор. Преместване на единица: = wdCharacter, Брой: =-2

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

За да преместите думи вместо това:

1 Избор. Преместване на единица: = wdWord, Брой: = 2

Изборът е по -лесен за работа (в сравнение с диапазони), защото е като робот, използващ Word, имитиращ човешки потребител. Където е точката на вмъкване - ще се извършат някои действия. Но това означава, че трябва да се погрижите къде е точката на вмъкване! Това не е лесно след много стъпки в кода. В противен случай Word ще промени текста на желаното място.

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

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 = Вярно

Направете абзаца центриран:

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.InsertParagraphПреди „Вмъкване на абзац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, за да научите повече за променливи, цикли, MessageBoxes, настройки, условна логика и много други.

Примери за макроси на Word

Примери за макроси на Word
Шаблони
Добавяне на нови документи
Пребройте думите при подбор
Текстови кутии
Запазване като PDF
Отметки
Таблици
Намери и намери и замени
Отворете Документи

Често задавани въпроси за Word VBA

Какво е макрос на Word?

Макросът е общ термин, който се отнася до набор от инструкции за програмиране, които автоматизират задачите. Word Macros автоматизират задачи в Word, използвайки езика за програмиране VBA.

Word има ли VBA?

Да, Microsoft Word има VBA редактор. Можете да получите достъп до него, като натиснете ALT + F11 или като отидете до Developer> Visual Basic.

Как да използвам VBA в Word?

1. Отворете VBA Editor (ALT + F11 или Developer> Visual Basic)
2. Отидете на Insert> Module, за да създадете Code Module
3. Въведете „Sub HelloWorld“ и натиснете Enter
4. Между редовете „Sub HelloWorld“ и „End Sub“ въведете „MsgBox„ Hello World! “
5. Създали сте макрос!
6. Сега натиснете „F5“, за да стартирате макроса

wave wave wave wave wave