Velkommen til vår Word VBA / Makro Mega-guide!
Denne siden inneholder:
-
- Word VBA -opplæring PDF (gratis nedlasting)
- Word VBA "Cheat Sheet" som inneholder en liste over de mest brukte Word VBA -kodebitene
- Full Word VBA / makroopplæring.
- Søkbar liste over alle våre Word VBA makroopplæringsprogrammer
Du er kanskje også interessert i vår interaktive VBA -opplæring for Excel. Selv om noen av eksemplene / øvelsene er spesifikke for Excel VBA, er mye av innholdet generelt for alle VBA, og du kan finne det nyttig å lære konsepter som If Statements, Loops, MessageBoxes og mer.
VBA PDF (gratis nedlastinger)
Last ned vår gratis Microsoft Word VBA -opplæring! Eller VBA -opplæringsprogrammer for andre Office -programmer!
nedlasting
Word VBA -eksempler "CheatSheet"
Nedenfor finner du enkle VBA -kodeeksempler for arbeid med Microsoft Word.
Velg / Gå til
BeskrivelseVBA -kodeTilbakeSelection.TypeBackspaceVelg Hele dokumentetSelection.HomeKey Unit: = wdStoryValg. ForlengKopiereValg. KopiSlettSelection.Delete Unit: = wdCharacter, Count: = 1Sett inn etterSelection.InsertAfter "tekst"Begynnelsen på linjenSelection.HomeKey Unit: = wdLineSlutt på linjenSelection.EndKey Unit: = wdLineLim innValg. Lim innVelg alleSelection.HoleStoryVelg Hele linjenSelection.EndKey Unit: = wdLine, Extend: = wdExtendFlytt opp avsnittSelection.MoveUp Unit: = wdParagraph, Count: = 1Flytt høyre tegnSelection.MoveRight Unit: = wdCharacter, Count: = 1Flytt til høyre én celle i tabellenSelection.MoveRight Unit: = wdCellGå til Start av DokSelection.HomeKey Unit: = wdStoryGå til slutten av dokSelection.EndKey Unit: = wdStoryGå til side 1Selection.GoTo What: = wdGoToPage, Which: = wdGoToNext, Name: = ”1 ″Gå til toppen av sidenSelection.GoTo What: = wdGoToBookmark, navn: = ”\ Side”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Gå tilbake til toppen
Bokmerker
BeskrivelseVBA -kodeLegge tilMed ActiveDocument.Bookmarks.Add Range: = Selection.Range, Name: = ”Name”
.DefaultSorting = wdSortByName
.ShowHidden = Falsk
Slutt medTelleDim n som heltall
n = ActiveDocument.Bookmarks.CountSlettActiveDocument.Bookmarks ("BookmarkName"). SlettEksisterer?Hvis ActiveDocument.Bookmarks.Exists ("BookmarkName") = True da
'Gjør noe
Slutt omGå tilSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”Plukke utActiveDocument.Bookmarks ("BookmarkName"). VelgErstatt tekstSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter "Ny tekst"
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Navn: = ”Bokmerkenavn”
Gå tilbake til toppen
Dokument
BeskrivelseVBA -kodeAktiverDokumenter ("Eksempel.doc"). AktiverLegg til variabelDim doc As DocumentSett doc = Documents.AddLegge tilDocuments.AddLegg til (fra en annen dokumentasjon)Documents.Add Template: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = FalskLukkDokumenter ("Eksempel.doc"). LukkLukk - Lagre endringerDokumenter ("Eksempel.doc"). Lukk SaveChanges: = wdSaveChangesLukk - Ikke lagreDokumenter ("Eksempel.doc"). Lukk SaveChanges: = wdDoNotSaveChangesLukk - Be om å lagreDokumenter ("Eksempel.doc"). Lukk SaveChanges: = wdPromptToSaveChanges
Gå tilbake til toppen
Kolonner
BeskrivelseVBA -kodeLagre somDokumenter ("Eksempel.doc"). SaveAs ("C: \ Eksempel \ Eksempel.dok")LagreDokumenter ("Eksempel.doc"). LagreBeskytteDokumenter ("Eksempel.doc"). Beskytt passord: = "passord"UbeskyttetDokumenter ("Eksempel.doc"). Avbeskytt passord: = "passord"Antall siderDim varNumberPages som variantvarNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)Skrive utDokumenter ("Eksempel.doc"). Skriv ut
Gå tilbake til toppen
Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!Skrift
BeskrivelseVBA -kodeStørrelseSelection.Font.Size = 12ModigSelection.Font.Bold = TrueKursivSelection.Font.Italic = TrueUnderstrekSelection.Font.Underline = wdUnderlineSingleAlle CapsSelection.Font.AllCaps = TrueFargeSelection.Font.TextColor = vbRedNavnSelection.Font.Name = “Abadi”AbonnementSelection.Font.Subscript = TrueSuperScriptSelection.Font.Superscript = TrueUthev fargeSelection.Range.HighlightColorIndex = wdYellowStilSelection.Style = ActiveDocument.Styles (“Normal”)Gå tilbake til toppen
Sett inn
BeskrivelseVBA -kodeSett inn autotekstSelection.TypeText Text: = ”a3 ″Selection.Range.InsertAutoTextSett inn datokodeSett inn filSelection.InsertFile ("C: \ Docs \ Something.doc")Sett inn sideskiftSelection.InsertBreak Type: = wdPageBreakSett inn avsnittssymbolSelection.TypeText Text: = Chr $ (182)Sett inn faneSelection.TypeText Text: = vbTabSett inn tekstSelection.TypeText Text: = ”Enhver tekst”Sett inn Type AvsnittSelection.TypeParagraphSett inn avsnittValg. Sett inn avsnitt
Gå tilbake til toppen
Sløyfer
BeskrivelseVBA -kodeGjør til slutten av dokGjør inntil ActiveDocument.Bookmarks ("\ Sel") = ActiveDocument.Bookmarks ("\ EndOfDoc")'Gjør noe
UnderFor hver Dokument i DokumenterDim doc As Document
For hvert dokument i dokumenter
'Gjør noe
Neste dokSløyfe gjennom avsnittSub til avsnitt
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Til iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Neste jeg
Gå tilbake til toppen
Avsnitt
BeskrivelseVBA -kodeKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TruePlass etterSelection.ParagraphFormat.SpaceAfter = 12Plass førSelection.ParagraphFormat.SpaceBefore = 0Juster senteretSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterJuster høyreSelection.ParagraphFormat.Alignment = wdAlignParagraphRightJuster venstreSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftInnrykk venstreSelection.ParagraphFormat.LeftIndent = InchesToPoints (3.75)Høyre innrykkSelection.ParagraphFormat.RightIndent = InchesToPoints (1)LinjeavstandMed Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
.Linjeavstand = 12
Slutt medSløyfe gjennom alle avsnittSub til avsnitt
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Til iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Neste jeg
Gå tilbake til toppen
Word VBA makroopplæring
Dette er en opplæring for bruk av VBA med Microsoft Word. Denne opplæringen lærer deg hvordan du skriver en enkel makro og samhandler med dokumenter, områder, utvalg og avsnitt.
Merk: Hvis du er helt ny på makroer / VBA, kan du også finne denne artikkelen nyttig: Hvordan skrive VBA -makroer fra Scratch.
VBA er programmeringsspråket som brukes til å automatisere Microsoft Office -programmer, inkludert Word, Excel, Outlook, PowerPoint og Access.
Makroer er blokker av VBA -kode som utfører spesifikke oppgaver.
Når du Ta opp en makro, Word vil skrive VBA -kode inn i en makro, slik at du kan gjenta handlingene dine. Du kan se en liste over alle tilgjengelige makroer fra Vis> Makroer.
Etter at du har spilt inn en makro, vil du kunne redigere makroen fra makrolisten:
Når du klikker Redigere, åpner du VBA -redaktør. Ved hjelp av VBA Editor kan du redigere innspilte makroer eller skrive en Word -makro fra bunnen av. For å få tilgang til VBA Editor bruker du snarveien ALT + F11 eller klikk Visual Basic fra Utviklerbånd.
Enkelt Word -makroeksempel
Dette er et enkelt eksempel på en Word VBA -makro. Den utfører følgende oppgaver:
- Åpner et Word -dokument
- Skriver til Dokument
- Lukker og lagrer Word -dokumentet.
123456789101112131415 | Sub WordMacroExample ()'Åpne Doc & Assign to VariableDim oDoc som dokumentSett oDoc = Documents.Open ("c: \ Users \ someone \ NewDocument.docx")'Skriv til doktorSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Lagre og lukk dokoDoc.SaveoDoc.CloseSlutt Sub |
Grunnleggende om makro i Word
All VBA -kode må lagres innenfor prosedyrer som dette. For å opprette en prosedyre i VBA, skriver du “Sub WordMacroExample” (Der “WordMacroExample” er ønsket makronavn) og trykker på TAST INN. VBA vil automatisk legge til parentesen og avslutte sub.
Word -dokumentobjekt
Når du samhandler med Microsoft Word i VBA, refererer du ofte til Word "Objekter". De vanligste objektene er:
Søknadsobjekt - Microsoft Word selv
Dokumentobjekt - Et Word -dokument
Rekkevidde - En del av et Word -dokument
Markeringsobjekt - Et valgt område eller markørplassering.
applikasjon
Søknad er objektet på “toppnivå”. Alle andre objekter i Word kan nås gjennom det.
I tillegg til å få tilgang til andre Word-objekter, er det "applikasjonsnivå" -innstillinger som kan brukes:
1 | Application.Options.AllowDragAndDrop = True |
Dette er et eksempel på tilgang til "Utvalget" av "Windows (1)" med i programmet:
1 | Application.Windows (1) .Selection.Characters.Count |
Imidlertid kan de vanligste Word -objektene nås direkte uten å skrive hele hierarkiet. Så i stedet kan du (og burde) bare skrive:
1 | Utvalg. Tegn. Telle |
Dokumenter
ActiveDocument
Ofte vil du ha to eller flere dokumenter åpnet i Word, og du må spesifisere hvilket spesifikt Word -dokument du skal samhandle med. En måte å spesifisere hvilket dokument som skal brukes ActiveDocument. For eksempel:
1 | ActiveDocument.PrintOut |
… ville skrive ut ActiveDocument. ActiveDocument er dokumentet i Word som "har fokus"
For å bytte ActiveDocument, bruk kommandoen Activate:
1 | Dokumenter ("Eksempel.docx"). Aktiver |
Dette dokumentet
I stedet for å bruke ActiveDocument til å referere til det aktive dokumentet, kan du bruke ThisDocument til å referere til dokumentet der makroen er lagret. Dette dokumentet vil aldri endres.
1 | ThisDocument.PrintOut |
Dokumentvariabler
For mer kompliserte makroer kan det imidlertid være vanskelig å holde styr på det aktive dokumentet. Det kan også være frustrerende å bytte frem og tilbake mellom dokumenter.
I stedet kan du bruke dokumentvariabler.
Denne makroen vil tildele ActiveDocument til en variabel og deretter skrive ut dokumentet ved hjelp av variabelen:
12345 | Sub VarExample ()Dim oDoc som dokumentSett oDoc = ActiveDocumentoDoc.PrintOutSlutt Sub |
Dokumentmetoder
Åpent dokument
Slik åpner du et Word -dokument:
1 | Documents.Open "c: \ Users \ SomeOne \ Desktop \ Test PM.docx" |
Vi anbefaler at du alltid tilordner et dokument til en variabel når du åpner det:
12 | Dim oDoc som dokumentSett oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx") |
Lag nytt dokument
Slik oppretter du et nytt Word -dokument:
1 | Documents.Add |
Vi kan instruere Word om å lage et nytt dokument basert på en mal:
1 | Documents.Add Template: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx" |
Som alltid er det nyttig og stor problemsparer å tilordne dokument til variabel når du oppretter eller åpner:
12 | Dim oDoc som dokumentSett oDoc = Documents.Add (Mal: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx") |
Lagre dokument
Slik lagrer du et dokument:
1 | ActiveDocument.Save |
eller SaveAs:
1 | ActiveDocument.SaveAs filnavn: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument |
Lukk dokumentet
Slik lukker du et dokument og lagrer endringer:
1 | ActiveDocument.Close wdSaveChanges |
eller uten å lagre endringer:
1 | ActiveDocument.Close wdDoNotSaveChanges |
Skriv ut dokument
Dette vil skrive ut det aktive dokumentet:
1 | ActiveDocument.PrintOut |
Område, utvalg, avsnitt
Område og Valg er sannsynligvis de viktigste objektene i Word VBA, absolutt de mest brukte.
Område refererer til en del av dokumentet, vanligvis, men ikke nødvendigvis, tekst.
Valg refererer til valgt tekst (eller annet objekt som bilder) eller, hvis ingenting er valgt, et innsettingspunkt.
Avsnitt representerer avsnitt i dokumentet. Det er mindre viktig enn det høres ut, fordi du ikke har direkte tilgang til avsnittstekst (du må få tilgang til et bestemt avsnittsområde for å gjøre endringer).
Område
Området kan være hvilken som helst del av dokumentet, inkludert hele dokumentet:
12 | Dim oRange As RangeSett oRange = ActiveDocument.Content |
eller den kan være liten som ett tegn.
Et annet eksempel, dette området vil referere til første ord i dokumentet:
12 | Dim oRange As RangeSett oRange = ActiveDocument.Range.Words (1) |
Vanligvis vil du få et område som refererer til en bestemt del av dokumentet og deretter endre det.
I det følgende eksemplet gjør vi det første ordet i andre ledd fet:
123 | Dim oRange As RangeSett oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True |
Angi områdetekst
Slik angir du tekstverdien for et område:
123 | Dim oRange As RangeSett oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = “Hei” |
(Tips: Legg merke til mellomrommet etter "Hei". Fordi ordobjekt inkluderer mellomrom etter ord, med bare "hei" ville vi få "Hellonext -ord")
Det er hundrevis av ting du kan gjøre med områder. Bare noen få eksempler (disse antar at du allerede er gjort objektvariabel oransje refererer til interessesortiment):
Endre skrift
1 | oRange.Font.Name = "Arial" |
Vis i meldingsboksen antall tegn i et bestemt område
1 | MsgBox oRange.Characters.Count |
Sett inn litt tekst før den
1 | oRange.InsertBefore "this is added text" |
Legg til en fotnote i området
12 | ActiveDocument.Footnotes.Add Range: = oRange, _Text: = "Les mer på easyexcel.net." |
Kopier den til utklippstavlen
1234 | oRange.CopyOfte må du endre til det som er et bestemt område som refererer. Så du kan starte og starteoRange.Start = 5oRange.End = 50 |
Etter koden ovenfor vil oRange referere til tekst som begynner med femte og slutter med 50. tegn i dokumentet.
Valg
Valg er enda mer brukt enn Område, fordi det er lettere å jobbe med Valg enn Rekkevidder, HVIS makroen din KUN samhandler med ActiveDocument.
Velg først ønsket del av dokumentet. Velg for eksempel det andre avsnittet i det aktive dokumentet:
1 | ActiveDocument.Paragraphs (2) .Range.Select |
Deretter kan du bruke markeringsobjektet til å skrive inn tekst:
1 | Selection.TypeText "Noe tekst" |
Vi kan skrive noen avsnitt under "Litt tekst":
12 | Selection.TypeText "Noe tekst"Selection.TypeParagraph |
Ofte er det nødvendig å vite om tekst er valgt eller om vi bare har et innsettingspunkt:
12345 | If Selection.Type wdSelectionIP ThenSelection.Font.Bold = TrueEllersMsgBox "Du må velge litt tekst."Slutt om |
Når vi jobber med markeringsobjekt, vil vi plassere innsettingspunktet til et bestemt sted og utstede kommandoer fra dette punktet.
Begynnelsen på dokumentet:
1 | Selection.HomeKey Unit: = wdStory, Extend: = wdMove |
Begynnelsen på gjeldende linje:
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdMove |
Utvid -parameteren wdMove flytter innsettingspunktet. I stedet kan du bruke wdExtend som vil velge all tekst mellom gjeldende innsettingspunkt.
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdExtend |
Flytt markering
Den mest nyttige metoden for å endre posisjonen til innsettingspunktet er Flytt. Slik flytter du markering to tegn fremover:
1 | Selection.Move Unit: = wdCharacter, Count: = 2 |
For å flytte det bakover, bruk negativt tall for parameteren Count:
1 | Selection.Move Unit: = wdCharacter, Count: =-2 |
Enhetsparameter kan være wdCharacter, wdWord, wdLine eller mer (bruk Word VBA -hjelp for å se andre).
For å flytte ord i stedet:
1 | Selection.Move unit: = wdWord, Count: = 2 |
Valg er lettere å jobbe med (sammenlignet med områder) fordi det er som en robot som bruker Word og etterligner menneskelig bruker. Der innsettingspunktet er - noen handlinger vil finne sted. Men dette betyr at du må passe på hvor innsettingspunktet er! Dette er ikke lett etter mange trinn i koden. Ellers ville Word endre teksten på ikke ønsket sted.
I tilfelle du trenger noen eiendom eller en metode som ikke er tilgjengelig i markeringsobjektet, kan du alltid enkelt få rekkevidde knyttet til utvalget:
1 | Sett oRange = Selection.Range |
TIPS: Bruk Valg er ofte lettere enn å bruke områder, men det er også langsommere (viktig når du håndterer store dokumenter)
Avsnitt
Du kan ikke bruke avsnittsobjektet direkte til å endre tekst:
1 | ActiveDocument.Paragraphs (1) .Text = "Nei, det ville ikke fungere" |
Ovenstående ville ikke fungere (faktisk vil det kaste en feil). Du må først skaffe rekkevidde knyttet til et bestemt avsnitt:
1 | ActiveDocument.Paragraphs (1) .Range.Text = "Det fungerer nå :)" |
Men du kan direkte endre stilen:
1 | ActiveDocument.Paragraphs (1) .Style = "Normal" |
eller endre avsnittsnivåformateringen:
1 | ActiveDocument.Paragraphs (1) .LeftIndent = 10 |
eller kanskje du vil beholde dette avsnittet på samme linje med neste avsnitt:
1 | ActiveDocument.Paragraphs (1) .KeepWithNext = True |
Gjør avsnitt sentrert:
1 | ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter |
Det er VELDIG nyttig å tilordne et bestemt avsnitt til objektvariabelen. Hvis vi tildeler variabelen et bestemt avsnitt, trenger vi ikke bekymre deg om det første avsnittet blir det andre fordi vi satte inn ett avsnitt før det:
12 | dim oPara som avsnittSett oPara = Selection.Paragraphs (1) ‘her tildeler vi første avsnitt i gjeldende valg til variabel |
Her er et eksempel der vi setter inn et avsnitt over det første avsnittet, men vi kan fortsatt referere til det gamle første avsnittet fordi det ble tilordnet en variabel:
1234567 | Sub ParagraphExample ()Dim oPara As ParagraphSett oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphFør 'Sett inn avsnittMsgBox oPara.Range.TextSlutt Sub |
Avsnittsobjekt brukes veldig ofte i sløyfer:
123456789101112 | Sub LoopThroughParagraphs ()Dim oPara As ParagraphFor hver oPara i ActiveDocument.Paragraphs'gjøre noe med det. Vi vil bare vise'avsnittstekst hvis stilen er "Overskrift 4"Hvis oPara.Style = "Overskrift 4" DaMsgBox oPara.Range.TextSlutt omNeste oParaSlutt Sub |
Word VBA Tutorial Conclusion
Denne opplæringen dekket det grunnleggende i Word VBA. Hvis du er ny i VBA, bør du også gå gjennom vår generelle VBA -opplæring for å lære mer om variabler, sløyfer, meldingsbokser, innstillinger, betinget logikk og mye mer.
Word -makroeksempler
Word -makroeksempler |
---|
Maler |
Legg til nye dokumenter |
Telle ord i utvalg |
Tekstbokser |
Lagre som PDF |
Bokmerker |
Tabeller |
Finn og finn og erstatt |
Åpne dokumenter |
Vanlige spørsmål om Word VBA
Hva er en Word -makro?
En makro er et generelt begrep som refererer til et sett med programmeringsinstruksjoner som automatiserer oppgaver. Word -makroer automatiserer oppgaver i Word ved hjelp av programmeringsspråket VBA.
Har ordet VBA?
Ja, Microsoft Word har VBA Editor. Den kan nås med ved å trykke ALT + F11 eller ved å navigere til Utvikler> Visual Basic.
Hvordan bruker jeg VBA i Word?
1. Åpne VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå til Sett inn> Modul for å lage en kodemodul
3. Skriv ‘Sub HelloWorld’ og trykk Enter
4. Mellom linjene 'Sub HelloWorld' og 'End Sub' skriver du 'MsgBox' Hello World! '
5. Du har laget en makro!
6. Trykk nå "F5" for å kjøre makroen