Vítejte v našem velkém průvodci Word VBA / Macros!
Tato stránka obsahuje:
-
- Word VBA Tutorial PDF (bezplatné stažení)
- „Cheat Sheet“ aplikace Word VBA obsahující seznam nejčastěji používaných úryvků kódu aplikace Word VBA
- Úplný výukový program Word VBA / Makro.
- Prohledávatelný seznam všech našich výukových programů pro makra Word VBA
Také by vás mohlo zajímat náš interaktivní výukový program VBA pro Excel. Zatímco některé příklady / cvičení jsou specifické pro Excel VBA, velká část obsahu je obecná pro všechny VBA a může být užitečné naučit se pojmy jako If Statements, Loops, MessageBoxes a další.
VBA PDF (bezplatné stahování)
Stáhněte si zdarma výukový program Microsoft Word VBA! Nebo výukové programy VBA pro jiné programy Office!
Stažení
Příklady aplikace Word VBA „CheatSheet“
Níže najdete jednoduché příklady kódu VBA pro práci s aplikací Microsoft Word.
Vyberte / Přejít na
PopisKód VBABackspaceSelection.TypeBackspaceVyberte Celý dokumentSelection.HomeKey Unit: = wdStoryVýběr. ProdloužitkopírovatVýběr. KopírovatVymazatSelection.Delete Unit: = wdCharacter, Count: = 1Vložit zaSelection.InsertAfter „text“Začátek řádkuSelection.HomeKey Unit: = wdLineKonec čárySelection.EndKey Unit: = wdLineVložitVýběr. VložitVybrat všeVýběr. Celá zprávaVyberte Celý řádekSelection.EndKey Unit: = wdLine, Extend: = wdExtendPřesunout odstavec nahoruSelection.MoveUp Unit: = wdParagraph, Count: = 1Přesunout jednu postavu dopravaSelection.MoveRight Unit: = wdCharacter, Count: = 1Přesunout vpravo jednu buňku v tabulceSelection.MoveRight Unit: = wdCellPřejít na začátek DocSelection.HomeKey Unit: = wdStoryPřejít na konec DocSelection.EndKey Unit: = wdStoryPřejít na stránku 1Selection.GoTo What: = wdGoToPage, which: = wdGoToNext, Name: = ”1 ″Přejít na začátek stránkySelection.GoTo What: = wdGoToBookmark, Název: = ”\ Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Návrat nahoru
Záložky
PopisKód VBAPřidatS ActiveDocument.Bookmarks.Add Range: = Selection.Range, Name: = ”Name”
.DefaultSorting = wdSortByName
.ShowHidden = False
Konec sPočetDim n jako Integer
n = ActiveDocument.Bookmarks.CountVymazatActiveDocument.Bookmarks („BookmarkName“). OdstranitExistuje?Pokud ActiveDocument.Bookmarks.Exists („BookmarkName“) = True, pak
'Dělej něco
Konec IfJít doSelection.GoTo What: = wdGoToBookmark, Název: = ”BookmarkName”VybratActiveDocument.Bookmarks („BookmarkName“). VyberteNahradit textSelection.GoTo What: = wdGoToBookmark, Název: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter "New Text"
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Název: = ”BookmarkName”
Návrat nahoru
Dokument
PopisKód VBAaktivovatDokumenty („Example.doc“). AktivujtePřidat do proměnnéDim doc As DocumentNastavit doc = Documents.AddPřidatDocuments.AddPřidat (z jiného dokumentu)Documents.Add Template: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = FalseZavřítDokumenty („Example.doc“). ZavřeteZavřít - Uložit změnyDokumenty („Example.doc“). Zavřete SaveChanges: = wdSaveChangesZavřít - NeukládatDokumenty („Example.doc“). Zavřete SaveChanges: = wdDoNotSaveChangesZavřít - výzva k uloženíDokumenty („Example.doc“). Zavřete SaveChanges: = wdPromptToSaveChanges
Návrat nahoru
Sloupce
PopisKód VBAUložit jakoDokumenty („Example.doc“). SaveAs („C: \ Example \ Example.doc“)UložitDokumenty („Example.doc“). UložitChránitDokumenty („Example.doc“). Chránit heslo: = „heslo“Zrušte ochranuDokumenty („Example.doc“). Heslo UnProtect: = ”heslo“Počet stranDim varNumberPages jako variantuvarNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)TiskDokumenty („Example.doc“). Tisk
Návrat nahoru
Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!Písmo
PopisKód VBAVelikostSelection.Font.Size = 12tučněSelection.Font.Bold = TrueKurzívaSelection.Font.Italic = TrueZdůraznitSelection.Font.Underline = wdUnderlineSingleVšechny čepiceSelection.Font.AllCaps = TrueBarvaSelection.Font.TextColor = vbRednázevSelection.Font.Name = „Abadi“Dolní indexSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueZvýrazněte barvuSelection.Range.HighlightColorIndex = wdŽlutáStylSelection.Style = ActiveDocument.Styles („normální“)Návrat nahoru
Vložit
PopisKód VBAVložte automatický textSelection.TypeText Text: = ”a3 ″Selection.Range.InsertAutoTextVložte kód dataVložit souborSelection.InsertFile („C: \ Docs \ Something.doc“)Vložte konec stránkySelection.InsertBreak Typ: = wdPageBreakVložit symbol odstavceSelection.TypeText Text: = Chr $ (182)Vložit tabSelection.TypeText Text: = vbTabVložit textSelection.TypeText Text: = „Libovolný text“Vložte typový odstavecVýběr. TypParagrafVložit odstavecVýběr. VložitParagraf
Návrat nahoru
Smyčky
PopisKód VBADo Do konce DocDo Do ActiveDocument.Bookmarks („\ Sel“) = ActiveDocument.Bookmarks („\ EndOfDoc“)'Dělej něco
SubPro každý dokument v dokumentechDim doc As Document
ForEach doc v dokumentech
'Dělej něco
Další docSmyčka přes odstavceDílčí odstavce
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Do iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Příště já
Návrat nahoru
Odstavec
PopisKód VBAKeepLinesSpolečněSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TrueVesmír poSelection.ParagraphFormat.SpaceAfter = 12Vesmír předSelection.ParagraphFormat.SpaceBefore = 0Zarovnat centrumSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterZarovnat dopravaSelection.ParagraphFormat.Alignment = wdAlignParagraphRightZarovnat dolevaSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftOdsazení vlevoSelection.ParagraphFormat.LeftIndent = InchesToPoints (3,75)Pravá odrážkaSelection.ParagraphFormat.RightIndent = InchesToPoints (1)ŘádkováníS Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Konec sProjděte všechny odstavceDílčí odstavce
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Do iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Příště já
Návrat nahoru
Výukový program makra Word VBA
Toto je návod k použití jazyka VBA v aplikaci Microsoft Word. Tento tutoriál vás naučí psát jednoduché makro a pracovat s dokumenty, rozsahy, výběry a odstavci.
Poznámka: Pokud jste v makrech / VBA úplně noví, může se vám hodit také tento článek: Jak psát makra VBA od začátku.
VBA je programovací jazyk používaný k automatizaci programů Microsoft Office včetně Word, Excel, Outlook, PowerPoint a Access.
Makra jsou bloky kódu VBA, které provádějí konkrétní úkoly.
Když vás Zaznamenejte si makro, Word zapíše kód VBA do makra, což vám umožní opakovat vaše akce. Můžete zobrazit seznam všech dostupných maker z Zobrazit> Makra.
Po zaznamenání makra budete moci makro upravit ze seznamu maker:
Když kliknete Upravit, otevřete Editor VBA. Pomocí editoru VBA můžete upravovat zaznamenaná makra nebo psát makra aplikace Word od začátku. K editoru VBA se dostanete pomocí zástupce ALT + F11 nebo klikněte Visual Basic z Vývojářská stuha.
Jednoduchý příklad makra Word
Toto je jednoduchý příklad makra Word VBA. Provádí následující úkoly:
- Otevře dokument aplikace Word
- Zapisuje do dokumentu
- Zavře a uloží dokument aplikace Word.
123456789101112131415 | Sub WordMacroExample ()'Otevřít Doc & Přiřadit proměnnéDim oDoc jako dokumentNastavit oDoc = Documents.Open ("c: \ Users \ someone \ NewDocument.docx")'Napište DocSelection.TypeText "www.automateexcel.com"Výběr. TypParagraf'Uložit a zavřít DocoDoc.SaveoDoc.ZavřítEnd Sub |
Základy makra aplikace Word
Veškerý kód VBA musí být uložen v rámci procedur, jako je tento. Chcete -li vytvořit postup ve VBA, zadejte „Sub WordMacroExample“ (kde „WordMacroExample“ je název požadovaného makra) a stiskněte VSTUP. VBA automaticky přidá závorku a End Sub.
Objekt dokumentu aplikace Word
Při interakci s aplikací Microsoft Word ve VBA budete často odkazovat na „objekty“ aplikace Word. Nejběžnějšími objekty jsou:
Objekt aplikace - Microsoft Word sám
Objekt dokumentu - Dokument aplikace Word
Objekt rozsahu - Část dokumentu aplikace Word
Objekt výběru - Vybraný rozsah nebo umístění kurzoru.
aplikace
Aplikace je objekt „nejvyšší úrovně“. Prostřednictvím něj lze dosáhnout na všechny ostatní objekty ve Wordu.
Kromě přístupu k dalším objektům aplikace Word lze použít také nastavení „na úrovni aplikace“:
1 | Application.Options.AllowDragAndDrop = True |
Toto je příklad přístupu k „výběru“ systému „Windows (1)“ pomocí aplikace:
1 | Application.Windows (1) .Selection.Characters.Count |
K nejběžnějším objektům aplikace Word je však možné přistupovat přímo, aniž byste museli psát celou hierarchii. Místo toho tedy můžete (a měli byste) napsat:
1 | Výběr. Znaky. Počet |
Dokumenty
ActiveDocument
Často budete mít ve Wordu otevřeny dva nebo více dokumentů a budete muset určit, se kterým konkrétním dokumentem Word máte komunikovat. Jedním ze způsobů, jak určit, který dokument je použít ActiveDocument. Například:
1 | ActiveDocument.PrintOut |
… Vytiskne ActiveDocument. ActiveDocument je dokument ve Wordu, který „má fokus“
Chcete -li přepnout ActiveDocument, použijte příkaz Aktivovat:
1 | Dokumenty („Example.docx“). Aktivujte |
Tento dokument
Místo použití ActiveDocument k odkazu na aktivní dokument můžete použít ThisDocument k odkazu na dokument, kde je uloženo makro. Tento dokument se nikdy nezmění.
1 | ThisDocument.PrintOut |
Proměnné dokumentu
U složitějších maker však může být obtížné sledovat aktivní dokument. Také může být frustrující přepínat tam a zpět mezi dokumenty.
Místo toho můžete použít proměnné dokumentu.
Toto makro přiřadí ActiveDocument proměnné a poté vytiskne dokument pomocí proměnné:
12345 | Podřízený příklad ()Dim oDoc jako dokumentNastavit oDoc = ActiveDocumentoDoc.PrintOutEnd Sub |
Metody dokumentu
Otevřít dokument
Otevření dokumentu aplikace Word:
1 | Documents.Open "c: \ Users \ SomeOne \ Desktop \ Test PM.docx" |
Při otevírání doporučujeme vždy přiřadit dokument proměnné:
12 | Dim oDoc jako dokumentNastavit oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx") |
Vytvořit nový dokument
Chcete -li vytvořit nový dokument aplikace Word:
1 | Documents.Add |
Můžeme dát Wordu pokyn, aby vytvořil nový dokument na základě nějaké šablony:
1 | Documents.Add Template: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx" |
Jako vždy je užitečné a obrovské spořič problémů přiřadit dokument proměnné při vytváření nebo otevírání:
12 | Dim oDoc jako dokumentNastavit oDoc = Documents.Add (Template: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx") |
Uložit dokument
Uložení dokumentu:
1 | ActiveDocument.Save |
nebo SaveAs:
1 | ActiveDocument.SaveAs Název souboru: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument |
Zavřít dokument
Zavření dokumentu a uložení změn:
1 | ActiveDocument.Close wdSaveChanges |
nebo bez uložení změn:
1 | ActiveDocument.Close wdDoNotSaveChanges |
Tisk dokumentu
Tím se vytiskne aktivní dokument:
1 | ActiveDocument.PrintOut |
Rozsah, výběr, odstavce
Rozsah a Výběr jsou pravděpodobně nejdůležitějšími objekty ve Wordu VBA, určitě nejpoužívanějšími.
Rozsah odkazuje na určitou část dokumentu, obvykle, ale ne nutně, text.
Výběr odkazuje na vybraný text (nebo jiný objekt jako obrázky) nebo, pokud není nic vybráno, bod vložení.
Odstavce představují odstavce v dokumentu. Je to méně důležité, než to zní, protože nemůžete přistupovat přímo k odstavcovému textu (k provedení úprav potřebujete přístup k určitému rozsahu odstavců).
Rozsah
Rozsah může být jakákoli část dokumentu, včetně celého dokumentu:
12 | Dim oRange As RangeNastavte oRange = ActiveDocument.Content |
nebo může být malý jako jeden znak.
Další příklad, tento rozsah by odkazoval na první slovo v dokumentu:
12 | Dim oRange As RangeNastavit oRange = ActiveDocument.Range.Words (1) |
Obvykle byste chtěli získat rozsah, který odkazuje na konkrétní část dokumentu, a poté jej upravit.
V následujícím příkladu označíme první slovo druhého odstavce tučně:
123 | Dim oRange As RangeNastavit oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True |
Nastavit text rozsahu
Chcete -li nastavit textovou hodnotu rozsahu:
123 | Dim oRange As RangeNastavit oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = „Dobrý den“ |
(Tip: Všimněte si mezery za „ahoj“. Protože objekt Word obsahuje mezeru za slovem, při pouhém „ahoj“ bychom dostali „slovo Hellonext“)
Existují stovky věcí, které můžete s rozsahy dělat. Jen několik příkladů (tyto předpokládají, že jste již vytvořili objektovou proměnnou oranžový podle rozsahu zájmu):
Změnit písmo
1 | oRange.Font.Name = "Arial" |
Zobrazí v poli zprávy počet znaků v konkrétním rozsahu
1 | MsgBox oRange.Character.Count |
Před něj vložte nějaký text
1 | oRange.InsertBefore "toto je vložený text" |
Přidejte do poznámky poznámku pod čarou
12 | ActiveDocument.Footnotes.Add Rozsah: = oRange, _Text: = "Přečtěte si více na easyexcel.net." |
Zkopírujte jej do schránky
1234 | oRange.CopyČasto je třeba přejít na konkrétní rozsah, který odkazuje. Takže můžete začít, začít a skončitoRange.Start = 5oRange.End = 50 |
Po výše uvedeném kódu by oRange odkazoval na text začínající pátým a končícím 50. znakem v dokumentu.
Výběr
Výběr je ještě rozšířenější než Rozsah, protože se s ním snáze pracuje Výběry než Rozsahy, POKUD vaše makro POUZE interaguje s ActiveDocumentem.
Nejprve vyberte požadovanou část dokumentu. Vyberte například druhý odstavec v aktivním dokumentu:
1 | ActiveDocument.Paragraphs (2) .Range.Select |
Potom můžete použít Selekční objekt k napsání nějakého textu:
1 | Selection.TypeText "Nějaký text" |
Můžeme napsat několik odstavců pod „Nějaký text“:
12 | Selection.TypeText "Nějaký text"Výběr. TypParagraf |
Často je nutné vědět, zda je vybrán nějaký text nebo máme pouze kurzor:
12345 | If Selection.Type wdSelectionIP ThenSelection.Font.Bold = TrueJinýMsgBox "Musíte vybrat nějaký text."Konec If |
Při práci s objektem Selection chceme umístit kurzor na konkrétní místo a vydávat příkazy začínající od tohoto bodu.
Začátek dokumentu:
1 | Selection.HomeKey Unit: = wdStory, Extend: = wdMove |
Začátek aktuálního řádku:
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdMove |
Parametr Rozšířit wdMove přesune kurzor. Místo toho můžete použít wdExtend, který vybere veškerý text mezi aktuálním kurzorem.
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdExtend |
Přesunout výběr
Nejužitečnější metodou pro změnu polohy vkládacího bodu je Move. Chcete -li přesunout výběr o dvě postavy dopředu:
1 | Selection.Move Unit: = wdCharacter, Count: = 2 |
Chcete -li jej přesunout zpět, použijte záporné číslo pro parametr Count:
1 | Selection.Move Unit: = wdCharacter, Count: =-2 |
Parametrem jednotky může být wdCharacter, wdWord, wdLine nebo více (pro zobrazení ostatních použijte nápovědu Word VBA).
Chcete -li místo toho přesunout slova:
1 | Selection.Move unit: = wdWord, Count: = 2 |
Se selekcí se pracuje snáze (ve srovnání s rozsahy), protože je to jako robot využívající Word, napodobující lidského uživatele. Kde je bod vložení - proběhne nějaká akce. Ale to znamená, že musíte dávat pozor, kde je bod vložení! Po mnoha krocích v kódu to není snadné. Jinak by Word změnil text na požadovaném místě.
V případě, že potřebujete nějakou vlastnost nebo metodu, která není k dispozici v objektu Selection, můžete vždy snadno získat rozsah spojený s výběrem:
1 | Nastavit oRange = Selection.Range |
TIP: Používání Výběr je často jednodušší než používání rozsahů, ale také je mnohem pomalejší (důležité při práci s velkými dokumenty)
Odstavce
Objekt odstavců nemůžete přímo použít ke změně textu:
1 | ActiveDocument.Paragraphs (1) .Text = "Ne, to by nefungovalo" |
Výše by nefungovalo (ve skutečnosti to způsobí chybu). Nejprve musíte získat rozsah spojený s konkrétním odstavcem:
1 | ActiveDocument.Paragraphs (1) .Range.Text = "Už to funguje :)" |
Ale můžete přímo změnit jeho styl:
1 | ActiveDocument.Paragraphs (1) .Style = "Normální" |
nebo změňte formátování na úrovni odstavce:
1 | ActiveDocument.Paragraphs (1). LeftIndent = 10 |
nebo možná budete chtít ponechat tento odstavec na stejném řádku s následujícím odstavcem:
1 | ActiveDocument.Paragraphs (1) .KeepWithNext = True |
Nastavit odstavec na střed:
1 | ActiveDocument.Paragraphs (1). Alignment = wdAlignParagraphCenter |
Je VELMI užitečné přiřadit konkrétní odstavec proměnné objektu. Pokud proměnné přiřadíme konkrétní odstavec, nemusíme si dělat starosti, pokud se první odstavec stane druhým, protože jsme před něj vložili jeden odstavec:
12 | dim oPara jako odstavecNastavte oPara = Selection.Paragraphs (1) ‘zde přiřadíme proměnné první odstavec aktuálního výběru |
Zde je příklad, kdy vložíme odstavec nad první odstavec, ale stále můžeme odkazovat na starý první odstavec, protože byl přiřazen proměnné:
1234567 | Dílčí odstavec Příklad ()Dim oPara jako odstavecNastavit oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Vložte odstavecMsgBox oPara.Range.TextEnd Sub |
Objekt odstavce je velmi často používán ve smyčkách:
123456789101112 | Sub LoopThroughParagraphs ()Dim oPara jako odstavecPro každou oParu v ActiveDocument.Paragraphs'udělej s tím něco. Pouze zobrazíme'odstavcový text, pokud má styl „Nadpis 4“Pokud oPara.Style = "Nadpis 4" PotomMsgBox oPara.Range.TextKonec IfDalší oParaEnd Sub |
Závěr z výukového programu Word VBA
Tento tutoriál pokrýval základy aplikace Word VBA. Pokud jste ve VBA noví, měli byste si také přečíst náš obecný výukový program pro VBA, abyste se dozvěděli více o proměnných, smyčkách, blocích zpráv, nastaveních, podmíněné logice a mnoha dalších.
Příklady makra aplikace Word
Příklady makra aplikace Word |
---|
Šablony |
Přidat nové dokumenty |
Počítejte slova ve výběru |
Textové boxy |
Uložit jako PDF |
Záložky |
Tabulky |
Najít a najít a vyměnit |
Otevřete dokumenty |
Word VBA Časté dotazy
Co je to Word Macro?
Makro je obecný termín, který odkazuje na sadu programovacích pokynů, které automatizují úkoly. Wordová makra automatizují úkoly ve Wordu pomocí programovacího jazyka VBA.
Má slovo VBA?
Ano, Microsoft Word má editor VBA. Lze k němu přistupovat stisknutím ALT + F11 nebo přechodem na Vývojář> Visual Basic.
Jak mohu použít VBA ve Wordu?
1. Otevřete editor VBA (ALT + F11 nebo Developer> Visual Basic)
2. Přejděte na Vložit> Modul a vytvořte modul kódu
3. Zadejte „Sub HelloWorld“ a stiskněte Enter
4. Mezi řádky „Sub HelloWorld“ a „End Sub“ zadejte „MsgBox“ Hello World!
5. Vytvořili jste makro!
6. Nyní stiskněte „F5“ pro spuštění makra