Word -makroeksempler og VBA -vejledning

Velkommen til vores Word VBA / Makroer Mega-guide!

Denne side indeholder:

    1. Word VBA Tutorial PDF (gratis download)
    2. Word VBA "Cheat Sheet", der indeholder en liste over de mest almindeligt anvendte Word VBA -kodestykker
    3. Fuld Word VBA / makro -tutorial.
    4. Søgbar liste over alle vores Word VBA makrovejledninger

Du er muligvis også interesseret i vores Interaktiv VBA -vejledning til Excel. Selvom nogle af eksemplerne / øvelserne er specifikke for Excel VBA, er meget af indholdet generelt for alle VBA, og du kan finde det nyttigt at lære begreber som If Statements, Loops, MessageBoxes og mere.

VBA PDF (gratis downloads)

Download vores gratis Microsoft Word VBA -vejledning! Eller VBA -øvelser til andre Office -programmer!

Hent

Word VBA -eksempler "CheatSheet"

Nedenfor finder du enkle VBA -kodeeksempler til arbejde med Microsoft Word.

Vælg / Gå til

BeskrivelseVBA -kodeTilbageSelection.TypeBackspaceVælg hele dokumentetSelection.HomeKey Unit: = wdStory
Udvælgelse. ForlængKopiUdvælgelse. KopiSletSelection.Delete Unit: = wdCharacter, Count: = 1Indsæt efterSelection.InsertAfter "tekst"Begyndelse af linjeSelection.HomeKey Unit: = wdLineSlut på linjeSelection.EndKey Unit: = wdLinesæt indUdvælgelse. IndsætVælg alleUdvælgelse.HeleStoryVælg hele linjenSelection.EndKey Unit: = wdLine, Extend: = wdExtendFlyt op afsnitSelection.MoveUp Unit: = wdParagraph, Count: = 1Flyt til højre Et tegnSelection.MoveRight Unit: = wdCharacter, Count: = 1Flyt til højre en celle i tabellenSelection.MoveRight Unit: = wdCellGå til Start af DocSelection.HomeKey Unit: = wdStoryGå til slutningen af ​​dokSelection.EndKey Unit: = wdStoryGå til side 1Selection.GoTo What: = wdGoToPage, Hvilket: = wdGoToNext, Navn: = ”1 ″Gå til toppen af ​​sidenSelection.GoTo What: = wdGoToBookmark, Navn: = ”\ Side”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1

Tilbage til toppen

Bogmærker

BeskrivelseVBA -kodeTilføjeMed ActiveDocument.Bookmarks
.Add Range: = Selection.Range, Name: = ”Name”
.DefaultSorting = wdSortByName
.ShowHidden = Falsk
Afslut medTælleDim n som heltal
n = ActiveDocument.Bookmarks.CountSletActiveDocument.Bookmarks ("Bogmærkenavn"). SletEksisterer?Hvis ActiveDocument.Bookmarks.Exists ("BookmarkName") = True derefter
'Gør noget
Afslut HvisGå tilSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”VælgActiveDocument.Bookmarks ("Bogmærkenavn"). VælgErstat tekstSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter "Ny tekst"
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Navn: = ”Bogmærke”

Tilbage til toppen

Dokument

BeskrivelseVBA -kodeAktiverDokumenter (“Eksempel.doc”). AktiverTilføj til variabelDim doc som dokument
Indstil doc = Documents.AddTilføjeDokumenter. TilføjTilføj (fra en anden dokument)Documents.Add Template: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = FalskTætDokumenter (“Eksempel.doc”). LukLuk - Gem ændringerDokumenter (“Eksempel.doc”). Luk SaveChanges: = wdSaveChangesLuk - Gem ikkeDokumenter (“Eksempel.doc”). Luk SaveChanges: = wdDoNotSaveChangesLuk - Spørg om at gemmeDokumenter (“Eksempel.doc”). Luk SaveChanges: = wdPromptToSaveChanges

Tilbage til toppen

Kolonner

BeskrivelseVBA -kodeGem somDokumenter ("Eksempel.doc"). SaveAs ("C: \ Eksempel \ Eksempel.dok")GemmeDokumenter (“Eksempel.doc”). GemBeskytteDokumenter (“Eksempel.doc”). Beskyt adgangskode: = ”adgangskode”BeskyttetDokumenter (“Eksempel.doc”). Beskyt adgangskode: = ”adgangskode”Antal siderDim varNumberPages som variant
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)PrintDokumenter (“Eksempel.doc”). Udskriv

Tilbage til toppen

Træt af at søge efter eksempler på VBA -kode? Prøv AutoMacro!

Skrifttype

BeskrivelseVBA -kodeStørrelseSelection.Font.Size = 12FremhævetSelection.Font.Bold = TrueKursivSelection.Font.Italic = TrueUnderstregeSelection.Font.Underline = wdUnderlineSingleAlle kasketterSelection.Font.AllCaps = TrueFarveSelection.Font.TextColor = vbRedNavnSelection.Font.Name = “Abadi”AbonnementSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueFremhæv farveSelection.Range.HighlightColorIndex = wdGulStilSelection.Style = ActiveDocument.Styles (“Normal”)

Tilbage til toppen

Indsæt

BeskrivelseVBA -kodeIndsæt AutoTekstSelection.TypeText Text: = ”a3 ″
Selection.Range.InsertAutoTextIndsæt datokodeIndsæt filSelection.InsertFile (“C: \ Docs \ Something.doc”)Indsæt sideskiftSelection.InsertBreak Type: = wdPageBreakIndsæt afsnitsymbolSelection.TypeText Text: = Chr $ (182)Indsæt faneSelection.TypeText Text: = vbTabIndsæt tekstSelection.TypeText Text: = ”Enhver tekst”Indsæt Type AfsnitSelection.TypeParagraphIndsæt afsnitUdvælgelse. Indsæt afsnit

Tilbage til toppen

Sløjfer

BeskrivelseVBA -kodeGør indtil slutningen af ​​dokGør indtil ActiveDocument.Bookmarks (“\ Sel”) = ActiveDocument.Bookmarks (“\ EndOfDoc”)
'Gør noget
SubFor hver Doc i DocsDim doc som dokument
For hvert dokument i dokumenter
'Gør noget
Næste dokSløjfe gennem afsnitSub gennem afsnit
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Til iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Næste i

Tilbage til toppen

Afsnit

BeskrivelseVBA -kodeKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TruePlads efterSelection.ParagraphFormat.SpaceAfter = 12Plads førSelection.ParagraphFormat.SpaceBefore = 0Juster centerSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterJuster til højreSelection.ParagraphFormat.Alignment = wdAlignParagraphRightJuster til venstreSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftIndrykning venstreSelection.ParagraphFormat.LeftIndent = InchesToPoints (3.75)Højre indrykningSelection.ParagraphFormat.RightIndent = InchesToPoints (1)LinjeafstandMed Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Afslut medSløjfe igennem alle afsnitSub gennem afsnit
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Til iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Næste i

Tilbage til toppen

Word VBA makroundervisning

Dette er en vejledning til brug af VBA med Microsoft Word. Denne vejledning lærer dig, hvordan du skriver en simpel makro og interagerer med dokumenter, områder, markeringer og afsnit.

Bemærk: Hvis du er helt ny på makroer / VBA, kan du også finde denne artikel nyttig: Sådan skriver du VBA -makroer fra bunden.

VBA er programmeringssproget, der bruges til at automatisere Microsoft Office -programmer, herunder Word, Excel, Outlook, PowerPoint og Access.

Makroer er blokke af VBA -kode, der udfører specifikke opgaver.

Når du Optag en makro, Word skriver VBA -kode til en makro, så du kan gentage dine handlinger. Du kan se en liste over alle tilgængelige makroer fra Vis> Makroer.

Efter optagelse af en makro vil du kunne redigere makroen fra makrolisten:

Når du klikker Redigere, åbner du VBA -redaktør. Ved hjælp af VBA Editor kan du redigere optagede makroer eller skrive en Word -makro fra bunden. Brug genvejen til at få adgang til VBA Editor ALT + F11 eller klik Visual Basic fra Udviklerbånd.

Simple Word Makro Eksempel

Dette er et enkelt eksempel på en Word VBA -makro. Det udfører følgende opgaver:

  • Åbner et Word -dokument
  • Skriver til Dokument
  • Lukker og gemmer Word -dokumentet.
123456789101112131415 Sub WordMacroExample ()'Åbn Doc & Tildel til variabelDim oDoc som dokumentIndstil oDoc = Documents.Open ("c: \ Users \ someone \ NewDocument.docx")'Skriv til DocSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Gem og luk DokoDoc.SaveoDoc.CloseAfslut Sub

Grundlæggende om makro i Word

Al VBA -kode skal gemmes inden for procedurer som denne. For at oprette en procedure i VBA skal du skrive "Sub WordMacroExample" (Hvor "WordMacroExample" er dit ønskede makronavn) og trykke på GÅ IND. VBA tilføjer automatisk parentesen og Afslut sub.

Word -dokumentobjekt

Når du interagerer med Microsoft Word i VBA, refererer du ofte til Word "Objekter". De mest almindelige objekter er:

Applikationsobjekt - Microsoft Word selv

Dokumentobjekt - Et Word -dokument

Områdeobjekt - En del af et Word -dokument

Markeringsobjekt - Et valgt område eller markørplacering.

Ansøgning

Applikationen er objektet på "topniveau". Alle andre objekter i Word kan nås gennem det.

Ud over at få adgang til andre Word-objekter er der indstillinger på "applikationsniveau", der kan anvendes:

1 Application.Options.AllowDragAndDrop = True

Dette er et eksempel på adgang til "Valg" af "Windows (1)" med i applikationen:

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

De mest almindelige Word -objekter kan dog tilgås direkte uden at skrive det fulde hierarki. Så i stedet kan du (og burde) bare skrive:

1 Udvælgelse. Tegn. Tælling

Dokumenter

ActiveDocument

Ofte vil du have to eller flere dokumenter åbnet i Word, og du skal angive, hvilket specifikt Word -dokument der skal interagere med. En måde at angive hvilket dokument der skal bruges ActiveDocument. For eksempel:

1 ActiveDocument.PrintOut

… ville udskrive ActiveDocument. ActiveDocument er det dokument i Word, der "har fokus"

For at skifte ActiveDocument skal du bruge kommandoen Aktiver:

1 Dokumenter ("Eksempel.docx"). Aktiver

Dette dokument

I stedet for at bruge ActiveDocument til at referere til det aktive dokument, kan du bruge ThisDocument til at referere til det dokument, hvor makroen er gemt. Dette dokument vil aldrig ændre sig.

1 ThisDocument.PrintOut

Dokumentvariabler

For mere komplicerede makroer kan det imidlertid være svært at holde styr på det aktive dokument. Det kan også være frustrerende at skifte frem og tilbage mellem dokumenter.

I stedet kan du bruge dokumentvariabler.

Denne makro vil tildele ActiveDocument til en variabel og derefter udskrive dokumentet ved hjælp af variablen:

12345 Sub VarExample ()Dim oDoc som dokumentIndstil oDoc = ActiveDocumentoDoc.PrintOutAfslut Sub

Dokumentmetoder

Åbn dokument

Sådan åbner du et Word -dokument:

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

Vi anbefaler altid at tildele et dokument til en variabel, når det åbnes:

12 Dim oDoc som dokumentIndstil oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx")

Opret nyt dokument

Sådan opretter du et nyt Word -dokument:

1 Dokumenter. Tilføj

Vi kan instruere Word om at oprette et nyt dokument baseret på en skabelon:

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

Som altid er det nyttigt og enorm problemsparer at tildele dokument til variabel ved oprettelse eller åbning:

12 Dim oDoc som dokumentIndstil oDoc = Documents.Add (skabelon: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx")

Gem dokument

Sådan gemmes et dokument:

1 ActiveDocument.Save

eller SaveAs:

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

Luk dokument

Sådan lukker du et dokument og gemmer ændringer:

1 ActiveDocument.Close wdSaveChanges

eller uden at gemme ændringer:

1 ActiveDocument.Close wdDoNotSaveChanges

Udskriv dokument

Dette udskriver det aktive dokument:

1 ActiveDocument.PrintOut

Område, markering, afsnit

Rækkevidde og Udvælgelse er sandsynligvis de vigtigste objekter i Word VBA, bestemt de mest anvendte.

Rækkevidde refererer til en del af dokumentet, normalt, men ikke nødvendigvis, tekst.

Udvælgelse refererer til markeret tekst (eller andet objekt som billeder) eller, hvis intet er valgt, et indsættelsespunkt.

Afsnit repræsenterer afsnit i dokumentet. Det er mindre vigtigt, end det lyder, fordi du ikke direkte kan få adgang til afsnitstekst (du skal have adgang til et bestemt afsnitsområde for at foretage ændringer).

Rækkevidde

Område kan være en hvilken som helst del af dokumentet, inklusive hele dokumentet:

12 Dim oRange som områdeIndstil oRange = ActiveDocument.Content

eller det kan være lille som en karakter.

Et andet eksempel, dette område vil referere til første ord i dokumentet:

12 Dim oRange som områdeIndstil oRange = ActiveDocument.Range.Words (1)

Normalt vil du gerne have et område, der refererer til en bestemt del af dokumentet og derefter ændre det.

I det følgende eksempel gør vi det første ord i andet afsnit fed:

123 Dim oRange som områdeIndstil oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = Sandt

Indstil områdetekst

Sådan indstilles tekstværdien for et område:

123 Dim oRange som områdeIndstil oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = "Hej"

(Tip: Bemærk mellemrummet efter "Hej". Fordi ordobjekt inkluderer mellemrum efter ord, med bare "hej" ville vi få "Hellonext -ord")

Der er hundredvis af ting, du kan gøre med intervaller. Bare et par eksempler (disse antager, at du allerede er lavet objektvariabel orange henviser til interesseinterval):

Skift skrifttype

1 oRange.Font.Name = "Arial"

Vis i meddelelsesboksen antal tegn i et bestemt område

1 MsgBox oRange.Characters.Count

Indsæt noget tekst før den

1 oRange.InsertBefore "dette er indsat tekst"

Tilføj en fodnote til området

12 ActiveDocument.Footnotes.Add Range: = oRange, _Text: = "Læs mere på easyexcel.net."

Kopier det til udklipsholderen

1234 oRange.CopyOfte er du nødt til at ændre til, hvad der er særligt område, der henviser til. Så du kan starte og starteoRange.Start = 5oRange.End = 50

Efter ovenstående kode vil oRange referere til tekst, der starter med femte og slutter med 50. tegn i dokumentet.

Udvælgelse

Udvælgelse er endnu mere udbredt end Rækkevidde, fordi det er lettere at arbejde med Udvælgelser end Intervaller, HVIS din makro KUN interagerer med ActiveDocument.

Vælg først den ønskede del af dit dokument. Vælg f.eks. Det andet afsnit i det aktive dokument:

1 ActiveDocument.Paragraphs (2) .Range.Select

Derefter kan du bruge markeringsobjektet til at skrive tekst:

1 Selection.TypeText "Noget tekst"

Vi kan skrive nogle afsnit under "Nogle tekst":

12 Selection.TypeText "Noget tekst"Selection.TypeParagraph

Ofte er det nødvendigt at vide, om der er valgt noget tekst, eller vi bare har et indsættelsespunkt:

12345 Hvis Selection.Type wdSelectionIP HerefterSelection.Font.Bold = TrueAndetMsgBox "Du skal vælge noget tekst."Afslut Hvis

Når vi arbejder med markeringsobjekt, vil vi placere indsættelsespunkt på et bestemt sted og udstede kommandoer, der starter fra dette punkt.

Begyndelse af dokument:

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

Begyndelsen af ​​den aktuelle linje:

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

Udvid parameter wdMove flytter indsættelsespunktet. I stedet kan du bruge wdExtend, som vælger al tekst mellem det aktuelle indsættelsespunkt.

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

Flyt markering

Den mest nyttige metode til ændring af indsættelsespunktets position er Flyt. Sådan flyttes markering to tegn fremad:

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

For at flytte det baglæns skal du bruge negativt tal til parameteren Count:

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

Enhedsparameter kan være wdCharacter, wdWord, wdLine eller mere (brug Word VBA -hjælp til at se andre).

Sådan flyttes ord i stedet:

1 Selection. Flyt enhed: = wdWord, Count: = 2

Udvælgelse er lettere at arbejde med (sammenlignet med intervaller), fordi det er som en robot, der bruger Word og efterligner menneskelig bruger. Hvor indsættelsespunktet er - nogle handlinger ville finde sted. Men det betyder, at du skal passe på, hvor indsættelsespunktet er! Dette er ikke let efter mange trin i kode. Ellers ville Word ændre teksten på det ikke ønskede sted.

I tilfælde af at du har brug for en ejendom eller metode, der ikke er tilgængelig i markeringsobjektet, kan du altid nemt få rækkevidde forbundet med valg:

1 Indstil oRange = Selection.Range

TIP: Brug Udvælgelse er ofte lettere end at bruge intervaller, men det er også langsommere (vigtigt når du håndterer store dokumenter)

Afsnit

Du kan ikke direkte bruge afsnitobjekt til at ændre tekst:

1 ActiveDocument.Paragraphs (1) .Text = "Nej, det ville ikke fungere"

Ovenstående ville ikke fungere (faktisk smider det en fejl). Du skal først hente rækkevidde forbundet med et bestemt afsnit:

1 ActiveDocument.Paragraphs (1) .Range.Text = "Det fungerer nu :)"

Men du kan direkte ændre sin stil:

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

eller rediger formateringen af ​​afsnitsniveau:

1 ActiveDocument.Paragraphs (1) .LeftIndent = 10

eller måske vil du beholde dette afsnit på samme linje med næste afsnit:

1 ActiveDocument.Paragraphs (1) .KeepWithNext = True

Gør afsnittet centreret:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

Det er MEGET nyttigt at tildele et bestemt afsnit til objektvariablen. Hvis vi tildeler variabel et bestemt afsnit, behøver vi ikke bekymre os, hvis det første afsnit bliver det andet, fordi vi indsatte et afsnit før det:

12 dim oPara som afsnitIndstil oPara = Selection.Paragraphs (1) ‘her tildeler vi første afsnit af det aktuelle valg til variabel

Her er et eksempel, hvor vi indsætter et afsnit over det første afsnit, men vi kan stadig henvise til det gamle første afsnit, fordi det blev tildelt en variabel:

1234567 Sub ParagraphExample ()Dim oPara As ParagraphIndstil oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphFør 'Indsæt afsnitMsgBox oPara.Range.TextAfslut Sub

Afsnitobjekt bruges meget ofte i sløjfer:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara As ParagraphFor hver oPara i ActiveDocument.Paragraphs'gør noget med det. Vi vil bare vise'afsnitstekst, hvis stilen er "Overskrift 4"Hvis oPara.Style = "Overskrift 4" SåMsgBox oPara.Range.TextAfslut HvisNæste oParaAfslut Sub

Word VBA Tutorial Konklusion

Denne vejledning dækkede det grundlæggende i Word VBA. Hvis du ikke er ny i VBA, bør du også gennemgå vores generelle VBA -vejledning for at lære mere om variabler, sløjfer, meddelelsesbokse, indstillinger, betinget logik og meget mere.

Word Makro Eksempler

Word Makro Eksempler
Skabeloner
Tilføj nye dokumenter
Tæl ord i udvalg
Tekstbokse
Gem som PDF
Bogmærker
Tabeller
Find og Find og erstat
Åbn dokumenter

Ofte stillede spørgsmål om Word VBA

Hvad er en Word -makro?

En makro er et generelt udtryk, der refererer til et sæt programmeringsinstruktioner, der automatiserer opgaver. Word -makroer automatiserer opgaver i Word ved hjælp af programmeringssproget VBA.

Har ordet VBA?

Ja, Microsoft Word har VBA Editor. Det kan tilgås med ved at trykke på ALT + F11 eller ved at navigere til Developer> Visual Basic.

Hvordan bruger jeg VBA i Word?

1. Åbn VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå til Indsæt> Modul for at oprette et kodemodul
3. Skriv ‘Sub HelloWorld’, og tryk på Enter
4. Mellem linjerne 'Sub HelloWorld' og 'End Sub' skal du skrive 'MsgBox' Hello World! '
5. Du har oprettet en makro!
6. Tryk nu på 'F5' for at køre makroen

wave wave wave wave wave