Word Macro Voorbeelden & VBA-zelfstudie

Welkom bij onze Word VBA / Macro's Mega-Guide!

Deze pagina bevat:

    1. Word VBA-zelfstudie PDF (gratis download)
    2. Word VBA "Cheat Sheet" met een lijst van de meest gebruikte Word VBA-codefragmenten
    3. Volledige Word VBA / Macro-zelfstudie.
    4. Doorzoekbare lijst van al onze Word VBA-macrotutorials

Mogelijk bent u ook geïnteresseerd in onze Interactieve VBA-zelfstudie voor Excel. Hoewel sommige voorbeelden/oefeningen specifiek zijn voor Excel VBA, is veel van de inhoud generiek voor alle VBA en vindt u het misschien handig om concepten zoals If-statements, Loops, MessageBoxen en meer te leren.

VBA PDF (gratis downloads)

Download onze gratis Microsoft Word VBA-zelfstudie! Of VBA-tutorials voor andere Office-programma's!

Downloaden

Word VBA-voorbeelden "CheatSheet"

Hieronder vindt u eenvoudige VBA-codevoorbeelden voor het werken met Microsoft Word.

Selecteer / Ga naar

BeschrijvingVBA-codeBackspaceSelectie.TypeBackspaceSelecteer Volledig documentSelectie.HomeKey Unit:=wdStory
Selectie.VerlengenKopiërenSelectie.KopiërenVerwijderenSelectie.Delete Unit:=wdCharacter, Count:=1Invoegen naSelectie.InvoegenNa “tekst”Begin van lijnSelectie.HomeKey Unit:=wdLineEinde van de lijnSelectie.EndKey Unit:=wdLinePlakkenSelectie.PlakkenSelecteer allesSelectie.Geheel VerhaalSelecteer hele regelSelection.EndKey Unit:=wdLine, Extend:=wdExtendParagraaf omhoogSelection.MoveUp Unit:=wdParagraph, Count:=1Eén personage naar rechts verplaatsenSelection.MoveRight Unit:=wdCharacter, Count:=1Eén cel naar rechts verplaatsen in tabelSelection.MoveRight Unit:=wdCellGa naar het begin van DocSelectie.HomeKey Unit:=wdStoryGa naar het einde van het documentSelectie.EndKey Unit:=wdStoryGa naar pagina 1Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=”1″Ga naar het begin van de paginaSelection.GoTo What:=wdGoToBookmark, Naam:=”\Pagina”
Selection.MoveLeft Unit:=wdCharacter, Count:=1

terug naar boven

Bladwijzers

BeschrijvingVBA-codeToevoegenMet ActiveDocument.Bookmarks
.Toevoegen Bereik:=Selectie.Bereik, Naam:=”Naam”
.DefaultSorting = wdSortByName
.ShowHidden = False
Eindigt metGraafDim n als geheel getal
n = ActiveDocument.Bookmarks.CountVerwijderenActiveDocument.Bookmarks ("Bladwijzernaam").VerwijderenBestaat?Als ActiveDocument.Bookmarks.Exists ("BookmarkName") = True dan
'Doe iets
Stop alsGa naarSelection.GoTo What:=wdGoToBookmark, Name:=”BookmarkName”SelecteerActiveDocument.Bookmarks ("Bladwijzernaam").SelecteerTekst vervangenSelection.GoTo What:=wdGoToBookmark, Name:=”BookmarkName”
Selectie.Delete Unit:=wdCharacter, Count:=1
Selection.InsertAfter "Nieuwe tekst"
ActiveDocument.Bookmarks.Add Range:=Selection.Range, _
Naam:="BladwijzerNaam"

terug naar boven

Document

BeschrijvingVBA-codeActiverenDocumenten ("Voorbeeld.doc"). ActiverenToevoegen aan variabeleDim document als document
Set doc = Documenten.ToevoegenToevoegenDocumenten.ToevoegenToevoegen (vanuit een ander document)Documents.Add Template:=”C:\Forms\FormDoc.doc”, _
NewTemplate:=FalseDichtbijDocumenten ("Voorbeeld.doc").SluitenSluiten - Wijzigingen opslaanDocumenten ("Voorbeeld.doc"). Sluit Wijzigingen opslaan:=wdSaveChangesSluiten - Niet opslaanDocumenten ("Voorbeeld.doc"). Sluit Wijzigingen opslaan:=wdDoNotSaveChangesSluiten - Vragen om op te slaanDocumenten ("Voorbeeld.doc"). Sluit Wijzigingen opslaan:=wdPromptToSaveChanges

terug naar boven

Kolommen

BeschrijvingVBA-codeOpslaan alsDocumenten ("Voorbeeld.doc"). Opslaan als ("C:\Voorbeeld\Voorbeeld.doc")OpslaanDocumenten ("Voorbeeld.doc"). OpslaanBeschermenDocumenten ("Voorbeeld.doc").Bescherm wachtwoord:="wachtwoord"Beveiliging opheffenDocumenten ("Voorbeeld.doc"). UnProtect Password:="wachtwoord"Aantal pagina'sDim varNumberPages als variant
varNumberPages = _
ActiveDocument.Content.Information(wdActiveEndAdjustedPageNumber)AfdrukkenDocumenten ("Voorbeeld.doc"). Afdrukken

terug naar boven

Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!

Lettertype

BeschrijvingVBA-codeMaatSelectie.Lettergrootte = 12StoutmoedigSelectie.Lettertype.Bold = TrueCursiefSelectie.Font.Italic = TrueOnderstrepenSelection.Font.Underline = wdUnderlineSingleIn hoofdlettersSelection.Font.AllCaps = TrueKleurSelectie.Font.TextColor = vbRedNaamSelection.Font.Name = "Abadi"abonnementSelectie.Font.Subscript = TrueSuperScriptSelectie.Font.Superscript = TrueMarkeer kleurSelection.Range.HighlightColorIndex = wdYellowStijlSelectie.Style = ActiveDocument.Styles ("Normaal")

terug naar boven

Invoegen

BeschrijvingVBA-codeAutoTekst invoegenSelectie.TypeText Tekst:=”a3″
Selectie.Bereik.Insert AutoTextDatumcode invoegenBestand invoegenSelectie.InsertFile ("C:\Docs\Something.doc")Pagina-einde invoegenSelection.InsertBreak Type:=wdPageBreakAlineasymbool invoegenSelection.TypeText Text:=Chr$(182)Tabblad invoegenSelection.TypeText Text:=vbTabTekst invoegenSelection.TypeText Text:="Elke tekst"Type alinea invoegenSelectie.TypeParagraafAlinea invoegenSelectie.Paragraaf invoegen

terug naar boven

lussen

BeschrijvingVBA-codeDoen tot einde documentDoen tot ActiveDocument.Bookmarks ("\Sel") = ActiveDocument.Bookmarks ("\EndOfDoc")
'Doe iets
SubVoor elk document in DocumentenDim document als document
Voor elk document in documenten
'Doe iets
Volgende documentDoorloop alinea'sSub door alinea's
Dim ik zo lang, iParCount zo lang
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Naar iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
volgende i

terug naar boven

Paragraaf

BeschrijvingVBA-codeKeepLinesSamenSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = Truespatie naSelection.ParagraphFormat.SpaceAfter = 12Ruimte voorSelection.ParagraphFormat.SpaceBefore = 0Tekst in het midden uitlijnenSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterRechts uitlijnenSelection.ParagraphFormat.Alignment = wdAlignParagraphRightLinks uitlijnenSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftLinks inspringenSelection.ParagraphFormat.LeftIndent = InchesToPoints(3.75)Rechts inspringenSelection.ParagraphFormat.RightIndent = InchesToPoints(1)RegelafstandMet Selectie.Paragraafopmaak
.LineSpacingRule = wdLineSpaceExactly
.Lijnafstand = 12
Eindigt metDoorloop alle alinea'sSub door alinea's
Dim ik zo lang, iParCount zo lang
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Naar iParCount
ActiveDocument.Paragraphs(i).Alignment = wdAlignParagraphLeft
volgende i

terug naar boven

Word VBA Macro-zelfstudie

Dit is een tutorial voor het gebruik van VBA met Microsoft Word. In deze zelfstudie leert u hoe u een eenvoudige macro kunt schrijven en kunt werken met documenten, bereiken, selecties en alinea's.

Opmerking: als u helemaal nieuw bent met Macro's / VBA, vindt u dit artikel misschien ook nuttig: VBA-macro's schrijven vanuit Scratch.

VBA is de programmeertaal die wordt gebruikt om Microsoft Office-programma's te automatiseren, waaronder Word, Excel, Outlook, PowerPoint en Access.

Macro's zijn blokken VBA-code die specifieke taken uitvoeren.

Wanneer je Een macro opnemen, zal Word VBA-code in een macro schrijven, zodat u uw acties kunt herhalen. U kunt een lijst met alle beschikbare macro's bekijken via: Beeld > Macro's.

Nadat u een macro hebt opgenomen, kunt u de macro bewerken vanuit de macrolijst:

Wanneer u klikt Bewerking, je opent de VBA-editor. Met behulp van de VBA-editor kunt u opgenomen macro's bewerken of helemaal opnieuw een Word-macro schrijven. Gebruik de snelkoppeling om toegang te krijgen tot de VBA-editor: ALT + F11 of klik op Visuele Basis van de Ontwikkelaarslint.

Voorbeeld van een eenvoudig woordmacro

Dit is een eenvoudig voorbeeld van een Word VBA-macro. Het voert de volgende taken uit:

  • Opent een Word-document
  • Schrijft naar document
  • Sluit en bewaart het Word-document.
123456789101112131415 SubwoordMacroVoorbeeld()'Document openen en toewijzen aan variabele'Dim oDoc als documentStel oDoc = Documents.Open("c:\Gebruikers\iemand\NieuwDocument.docx") in'Schrijf naar Doc'Selection.TypeText "www.automateexcel.com"Selectie.TypeParagraaf'Document opslaan en sluiten'oDoc.OpslaanoDoc.SluitenEinde sub

Basisprincipes van Word-macro

Alle VBA-code moet binnen dergelijke procedures worden opgeslagen. Om een ​​procedure in VBA te maken, typt u "Sub WordMacroExample" (waarbij "WordMacroExample" de gewenste macronaam is) en drukt u op BINNENKOMEN. VBA voegt automatisch de haakjes en End Sub toe.

Word-documentobject

Bij interactie met Microsoft Word in VBA, zul je vaak naar Word "Objecten" verwijzen. De meest voorkomende objecten zijn:

Toepassingsobject - Microsoft Word zelf

Documentobject - Een Word-document

Bereikobject - Een deel van een Word-document

Selectie-object - Een geselecteerd bereik of cursorlocatie.

Sollicitatie

Applicatie is het "top-level" object. Alle andere objecten in Word zijn er via te bereiken.

Naast toegang tot andere Word-objecten, zijn er instellingen op "toepassingsniveau" die kunnen worden toegepast:

1 Application.Options.AllowDragAndDrop = True

Dit is een voorbeeld van toegang tot de “Selectie” van “Windows(1)” met in de Applicatie:

1 Toepassing.Windows(1).Selectie.Tekens.Aantal

De meest voorkomende Word-objecten zijn echter direct toegankelijk, zonder de volledige hiërarchie te typen. Dus in plaats daarvan kun (en moet) je gewoon typen:

1 Selectie.Tekens.Tellen

Documenten

ActiefDocument

Vaak hebt u twee of meer documenten geopend in Word en moet u specificeren met welk specifiek Word-document u wilt communiceren. Een manier om aan te geven welk document moet worden gebruikt ActiefDocument. Bijvoorbeeld:

1 ActiveDocument.PrintOut

… zou het ActiveDocument afdrukken. Het ActiveDocument is het document in Word dat “focus heeft”

Gebruik de opdracht Activeren om het ActiveDocument te wisselen:

1 Documenten("Voorbeeld.docx").Activeren

Dit document

In plaats van ActiveDocument te gebruiken om naar het actieve document te verwijzen, kunt u ThisDocument gebruiken om te verwijzen naar het document waarin de macro is opgeslagen. Dit document zal nooit veranderen.

1 Dit Document.Afdrukken

Documentvariabelen

Voor meer gecompliceerde macro's kan het echter moeilijk zijn om het actieve document bij te houden. Het kan ook frustrerend zijn om heen en weer te schakelen tussen documenten.

In plaats daarvan kunt u documentvariabelen gebruiken.

Deze macro wijst het ActiveDocument toe aan een variabele en drukt het document vervolgens af met behulp van de variabele:

12345 Sub VarVoorbeeld()Dim oDoc als documentStel oDoc = ActiveDocument inoDoc.PrintOutEinde sub

Documentmethoden

Document openen

Een Word-document openen:

1 Documenten.Open "c:\Users\SomeOne\Desktop\Test PM.docx"

We raden aan om een ​​document altijd aan een variabele toe te wijzen bij het openen:

12 Dim oDoc als documentStel oDoc = Documents.Open("c:\Users\SomeOne\Desktop\Test PM.docx") in

Nieuw document maken

Een nieuw Word-document maken:

1 Documenten.Toevoegen

We kunnen Word instrueren om een ​​nieuw document te maken op basis van een sjabloon:

1 Documents.Add Template:="C:\Program Files\Microsoft Office\Templates\MyTemplate.dotx"

Zoals altijd is het handig en enorm probleembesparend om een ​​document toe te wijzen aan een variabele bij het maken of openen:

12 Dim oDoc als documentStel oDoc = Documents.Add in (Template:="C:\Program Files\Microsoft Office\Templates\MyTemplate.dotx")

Document opslaan

Een document opslaan:

1 ActiveDocument.Opslaan

of Opslaan als:

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

Document sluiten

Een document sluiten en wijzigingen opslaan:

1 ActiveDocument.Close wdSaveChanges

of zonder wijzigingen op te slaan:

1 ActiveDocument.Close wdDoNotSaveChanges

Print document

Hiermee wordt het actieve document afgedrukt:

1 ActiveDocument.PrintOut

Bereik, selectie, alinea's

Bereik en Selectie zijn waarschijnlijk de belangrijkste objecten in Word VBA, zeker de meest gebruikte.

Bereik verwijst naar een deel van het document, meestal, maar niet noodzakelijk, tekst.

Selectie verwijst naar geselecteerde tekst (of een ander object zoals afbeeldingen) of, als er niets is geselecteerd, een invoegpunt.

alinea's paragrafen in document vertegenwoordigen. Het is minder belangrijk dan het klinkt, omdat u niet rechtstreeks toegang hebt tot alineatekst (u moet toegang hebben tot een bepaald alineabereik om wijzigingen aan te brengen).

Bereik

Bereik kan elk deel van het document zijn, inclusief het hele document:

12 Dim oranje bereik als bereikStel oRange = ActiveDocument.Content in

of het kan klein zijn als één teken.

Een ander voorbeeld, dit bereik zou verwijzen naar het eerste woord in het document:

12 Dim oranje bereik als bereikStel oRange = ActiveDocument.Range.Words(1) in

Meestal wilt u een bereik krijgen dat verwijst naar een specifiek deel van het document en dit vervolgens wijzigen.

In het volgende voorbeeld zullen we het eerste woord van de tweede alinea vet maken:

123 Dim oranje bereik als bereikSet oRange = ActiveDocument.Paragraphs(2).Bereik.Woorden(1)oBereik.Bold = True

Bereiktekst instellen

De tekstwaarde van een bereik instellen:

123 Dim oranje bereik als bereikSet oRange = ActiveDocument.Paragraphs(2).Bereik.Woorden(1)oBereik.Text = "Hallo"

(Tip: let op de spatie na "Hallo". Omdat woordobject spatie na woord bevat, krijgen we met alleen "hallo" "Hellonext-woord")

Er zijn honderden dingen die u met reeksen kunt doen. Slechts een paar voorbeelden (deze gaan ervan uit dat u al objectvariabel bent gemaakt) Oranje verwijzend naar interessegebied):

Lettertype wijzigen

1 oRange.Font.Name = "Arial"

Weergave in berichtenvak aantal tekens in een bepaald bereik

1 MsgBox oRange.Characters.Count

Voeg wat tekst ervoor in

1 oRange.InsertBefore "dit is ingevoegde tekst"

Voeg een voetnoot toe aan bereik

12 ActiveDocument.Footnotes.Add Range:=oBereik, _Text:="Lees meer op easyexcel.net."

Kopieer het naar het klembord

1234 oBereik.KopiërenVaak moet je veranderen naar wat een bepaald bereik is. Dus je kunt beginnen, het is begin en eindeoBereik.Start = 5oBereik.Einde = 50

Na bovenstaande code zou oRange verwijzen naar tekst die begint met het vijfde en eindigt met het 50e teken in het document.

Selectie

Selectie wordt zelfs meer gebruikt dan Bereik, omdat het gemakkelijker is om mee te werken Selecties dan Bereiken, ALS uw macro ALLEEN interageert met het ActiveDocument.

Selecteer eerst het gewenste deel van uw document. Selecteer bijvoorbeeld de tweede alinea in het actieve document:

1 ActiveDocument.Paragraphs(2).Bereikselectie

Vervolgens kunt u het Selectie-object gebruiken om wat tekst te typen:

1 Selection.TypeText "Wat tekst"

We kunnen enkele alinea's typen onder "Wat tekst":

12 Selection.TypeText "Wat tekst"Selectie.TypeParagraaf

Vaak is het nodig om te weten of er tekst is geselecteerd of dat we alleen een invoegpunt hebben:

12345 Als Selection.Type wdSelectionIP DanSelectie.Lettertype.Bold = TrueAndersMsgBox "Je moet wat tekst selecteren."Stop als

Wanneer we met een Selectie-object werken, willen we het invoegpunt op een bepaalde plaats plaatsen en vanaf dit punt opdrachten geven.

Begin van document:

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

Begin van de huidige regel:

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

De parameter Extend wdMove verplaatst het invoegpunt. In plaats daarvan kunt u wdExtend gebruiken, waarmee alle tekst tussen het huidige invoegpunt wordt geselecteerd.

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

Selectie verplaatsen

De handigste methode om de positie van het invoegpunt te wijzigen, is Verplaatsen. Selectie twee tekens vooruit verplaatsen:

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

om het achteruit te verplaatsen, gebruikt u een negatief getal voor de parameter Count:

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

Eenheidsparameter kan wdCharacter, wdWord, wdLine of meer zijn (gebruik Word VBA-hulp om anderen te zien).

Om in plaats daarvan woorden te verplaatsen:

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

Selectie is gemakkelijker om mee te werken (vergeleken met bereiken) omdat het is als een robot die Word gebruikt en een menselijke gebruiker nabootst. Waar het invoegpunt is, zou er enige actie plaatsvinden. Maar dit betekent dat u moet oppassen waar het invoegpunt is! Dit is niet eenvoudig na vele stappen in de code. Anders zou Word tekst op een niet gewenste plaats veranderen.

In het geval dat u een eigenschap of methode nodig heeft die niet beschikbaar is in het Selectie-object, kunt u altijd gemakkelijk een bereik verkrijgen dat aan de selectie is gekoppeld:

1 Stel oBereik = Selectie.Bereik in

TIP: Met behulp van Selectie is vaak gemakkelijker dan het gebruik van bereiken, maar het is ook veel langzamer (belangrijk als je met grote documenten omgaat)

alinea's

U kunt het object Alinea's niet rechtstreeks gebruiken om tekst te wijzigen:

1 ActiveDocument.Paragraphs(1).Text = "Nee, het zou niet werken"

Bovenstaande zou niet werken (eigenlijk zal het een foutmelding geven). U moet eerst het bereik verkrijgen dat aan een bepaalde alinea is gekoppeld:

1 ActiveDocument.Paragraphs(1).Range.Text = "Het werkt nu :)"

Maar u kunt de stijl direct wijzigen:

1 ActiveDocument.Paragraphs(1).Style = "Normaal"

of wijzig de opmaak op alineaniveau:

1 ActiveDocument.Paragraphs(1).LeftIndent = 10

of misschien wil je deze paragraaf op dezelfde regel houden met de volgende paragraaf:

1 ActiveDocument.Paragraphs(1).KeepWithNext = True

Maak alinea gecentreerd:

1 ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphCenter

Het is ZEER handig om een ​​bepaalde alinea toe te wijzen aan een objectvariabele. Als we een bepaalde alinea aan een variabele toewijzen, hoeven we ons geen zorgen te maken als de eerste alinea de tweede wordt, omdat we er een alinea ervoor hebben ingevoegd:

12 dim oPara als alineaStel oPara = Selection.Paragraphs(1) in 'hier wijzen we de eerste alinea van de huidige selectie toe aan variabele'

Hier is een voorbeeld waarbij we een alinea boven de eerste alinea invoegen, maar we kunnen nog steeds verwijzen naar de oude eerste alinea omdat deze aan een variabele was toegewezen:

1234567 SubparagraafVoorbeeld()Dim oPara As ParagraafStel oPara = ActiveDocument.Paragraphs(1) inMsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Alinea invoegen'MsgBox oPara.Range.TextEinde sub

Alinea-object wordt heel vaak gebruikt in lussen:

123456789101112 Sub LoopThroughParagraphs()Dim oPara As ParagraafVoor elke oPara in ActiveDocument.Paragraphs'doe er wat mee. We zullen gewoon weergeven:'alineatekst als de stijl 'Kop 4' isAls oPara.Style = "Kop 4" DanMsgBox oPara.Range.TextStop alsVolgende oParaEinde sub

Word VBA-zelfstudie Conclusie

Deze tutorial behandelde de basis van Word VBA. Als VBA nieuw voor u is, moet u ook onze algemene VBA-zelfstudie raadplegen voor meer informatie over variabelen, loops, MessageBoxen, instellingen, voorwaardelijke logica en nog veel meer.

Voorbeelden van woordmacro's

Voorbeelden van woordmacro's
Sjablonen
Nieuwe documenten toevoegen
Woorden tellen in selectie
Tekstvakken
Opslaan als PDF
Bladwijzers
Tafels
Zoeken en vinden en vervangen
Documenten openen

Veelgestelde vragen over Word VBA

Wat is een woordmacro?

Een macro is een algemene term die verwijst naar een reeks programmeerinstructies die taken automatiseren. Word-macro's automatiseren taken in Word met behulp van de VBA-programmeertaal.

Heeft woord VBA?

Ja, Microsoft Word heeft de VBA-editor. Het is toegankelijk door op ALT + F11 te drukken of door naar Ontwikkelaar> Visual Basic te gaan.

Hoe gebruik ik VBA in Word?

1. Open de VBA-editor (ALT + F11 of Developer > Visual Basic)
2. Ga naar Invoegen > Module om een ​​codemodule te maken
3. Typ 'Sub HelloWorld' en druk op Enter
4. Typ tussen de regels 'Sub HelloWorld' en 'End Sub' 'MsgBox 'Hello World!'
5. Je hebt een macro gemaakt!
6. Druk nu op 'F5' om de Macro uit te voeren

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave