Välkommen till vår Word VBA / Makro Mega-guide!
Denna sida innehåller:
-
- Word VBA -handledning PDF (gratis nedladdning)
- Word VBA ”Cheat Sheet” som innehåller en lista över de mest använda Word VBA -kodavsnitten
- Fullständig Word VBA / makrohandledning.
- Sökbar lista över alla våra Word VBA makrotutorials
Du kanske också är intresserad av vår interaktiva VBA -handledning för Excel. Medan några av exemplen / övningarna är specifika för Excel VBA, är mycket av innehållet generiskt för alla VBA och du kan tycka att det är användbart att lära sig begrepp som If -uttalanden, loopar, MessageBoxer och mer.
VBA PDF (gratis nedladdningar)
Ladda ner vår gratis Microsoft Word VBA -handledning! Eller VBA -handledning för andra Office -program!
Ladda ner
Word VBA Exempel "CheatSheet"
Nedan hittar du enkla exempel på VBA -kod för att arbeta med Microsoft Word.
Välj / Gå till
BeskrivningVBA -kodBackspaceSelection.TypeBackspaceVälj hela dokumentetSelection.HomeKey Unit: = wdStoryUrval. FörlängKopieraUrval. KopieraRaderaSelection.Delete Unit: = wdCharacter, Count: = 1Infoga efterSelection.InsertAfter “text”Början på radSelection.HomeKey Unit: = wdLineSlut på radSelection.EndKey Unit: = wdLineKlistraUrval. Klistra inVälj allaSelection.WholeStoryVälj Hel radSelection.EndKey Unit: = wdLine, Extend: = wdExtendFlytta upp styckeSelection.MoveUp Unit: = wdParagraph, Count: = 1Flytta höger ett teckenSelection.MoveRight Unit: = wdCharacter, Count: = 1Flytta höger en cell i tabellenSelection.MoveRight Unit: = wdCellGå till Start av DocSelection.HomeKey Unit: = wdStoryGå till slutet av DokSelection.EndKey Unit: = wdStoryGå till sida 1Selection.GoTo What: = wdGoToPage, vilket: = wdGoToNext, Namn: = ”1 ″Gå till toppen av sidanSelection.GoTo What: = wdGoToBookmark, Namn: = ”\ Sida”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Tillbaka till toppen
Bokmärken
BeskrivningVBA -kodLägg tillMed ActiveDocument.Bokmärken.Add Range: = Selection.Range, Name: = ”Name”
.DefaultSorting = wdSortByName
.ShowHidden = Falskt
Sluta medRäknaDim n som heltal
n = ActiveDocument.Bookmarks.CountRaderaActiveDocument.Bookmarks ("BookmarkName"). RaderaExisterar?Om ActiveDocument.Bookmarks.Exists (“BookmarkName”) = Sant då
'Göra någonting
Avsluta omGå tillSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”VäljActiveDocument.Bookmarks ("BookmarkName"). VäljErsätt textSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter “Ny text”
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Namn: = ”Bokmärkesnamn”
Tillbaka till toppen
Dokumentera
BeskrivningVBA -kodAktiveraDokument ("Exempel.doc"). AktiveraLägg till i variabelDim doc As DocumentAnge doc = Documents.AddLägg tillDocuments.AddLägg till (från ett annat dokument)Documents.Add Template: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = FalsktStängaDokument ("Exempel.doc"). StängStäng - Spara ändringarDokument ("Exempel.doc"). Stäng SaveChanges: = wdSaveChangesStäng - Spara inteDokument ("Exempel.doc"). Stäng SaveChanges: = wdDoNotSaveChangesStäng - Fråga att sparaDokument ("Exempel.doc"). Stäng SaveChanges: = wdPromptToSaveChanges
Tillbaka till toppen
Kolumner
BeskrivningVBA -kodSpara somDokument ("Exempel.doc"). SaveAs ("C: \ Exempel \ Exempel.doc")SparaDokument ("Exempel.doc"). SparaSkyddaDokument ("Exempel.doc"). Skydda lösenord: = "lösenord"OskyddadDokument ("Exempel.doc"). Avskydda lösenord: = "lösenord"Antal sidorDim varNumberPages som variantvarNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)Skriva utDokument ("Exempel.doc"). Skriv ut
Tillbaka till toppen
Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!Font
BeskrivningVBA -kodStorlekSelection.Font.Size = 12DjärvSelection.Font.Bold = TrueKursivSelection.Font.Italic = TrueUnderstrykningSelection.Font.Underline = wdUnderlineSingleAlla kepsarSelection.Font.AllCaps = TrueFärgSelection.Font.TextColor = vbRednamnSelection.Font.Name = “Abadi”IndexSelection.Font.Subscript = TrueExponentSelection.Font.Superscript = TrueMarkeringsfärgSelection.Range.HighlightColorIndex = wdGulStilSelection.Style = ActiveDocument.Styles (“Normal”)Tillbaka till toppen
Föra in
BeskrivningVBA -kodInfoga autotextSelection.TypeText Text: = ”a3 ″Selection.Range.InsertAutoTextInfoga datumkodInfoga filSelection.InsertFile (“C: \ Docs \ Something.doc”)Infoga sidbrytningSelection.InsertBreak Type: = wdPageBreakInfoga stycke symbolSelection.TypeText Text: = Chr $ (182)Infoga tabSelection.TypeText Text: = vbTabInfoga textSelection.TypeText Text: = ”valfri text”Infoga typ StyckeSelection.TypeParagraphInfoga styckeUrval. Infoga stycke
Tillbaka till toppen
Slingor
BeskrivningVBA -kodGör tills slutet av DokGör tills ActiveDocument.Bookmarks (“\ Sel”) = ActiveDocument.Bookmarks (“\ EndOfDoc”)'Göra någonting
SubFör varje dokument i dokumentDim doc As Document
För varje dokument i dokument
'Göra någonting
Nästa dokSlinga igenom styckenSub genom stycken
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Till iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Nästa i
Tillbaka till toppen
Paragraf
BeskrivningVBA -kodKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TrueSpace efterSelection.ParagraphFormat.SpaceAfter = 12Utrymme föreSelection.ParagraphFormat.SpaceBefore = 0Centrera i linje medSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterAnpassa till högerSelection.ParagraphFormat.Alignment = wdAlignParagraphRightJustera vänsterSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftVänster indragSelection.ParagraphFormat.LeftIndent = InchesToPoints (3.75)Rätt indragSelection.ParagraphFormat.RightIndent = InchesToPoints (1)RadavståndMed Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Sluta medSlinga igenom alla styckenSub genom stycken
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Till iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Nästa i
Tillbaka till toppen
Word VBA makrohandledning
Detta är en handledning för att använda VBA med Microsoft Word. Denna handledning lär dig hur du skriver ett enkelt makro och interagerar med dokument, intervall, markeringar och stycken.
Obs! Om du är helt ny på makron / VBA kan den här artikeln också vara användbar: Hur man skriver VBA -makron från Scratch.
VBA är programmeringsspråket som används för att automatisera Microsoft Office -program inklusive Word, Excel, Outlook, PowerPoint och Access.
Makron är block av VBA -kod som utför specifika uppgifter.
När du Spela in ett makro, Word kommer att skriva VBA -kod till ett makro, så att du kan upprepa dina handlingar. Du kan se en lista över alla tillgängliga makron från Visa> Makron.
När du har spelat in ett makro kommer du att kunna redigera makrot från makrolistan:
När du klickar Redigera, du öppnar VBA -redaktör. Med VBA Editor kan du redigera inspelade makron eller skriva ett Word -makro från grunden. För att komma åt VBA Editor använder du genvägen ALT + F11 eller klicka Visual Basic från Utvecklarband.
Enkelt Word -makroexempel
Detta är ett enkelt exempel på ett Word VBA -makro. Den utför följande uppgifter:
- Öppnar ett Word -dokument
- Skriver till Dokument
- Stänger och sparar Word -dokumentet.
123456789101112131415 | Sub WordMacroExample ()'Öppna Doc & Tilldela till variabelDim oDoc som dokumentAnge oDoc = Documents.Open ("c: \ Users \ someone \ NewDocument.docx")'Skriv till DocSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Spara och stäng DokoDoc.SaveoDoc.CloseAvsluta Sub |
Word Macro Basics
All VBA -kod måste lagras inom procedurer som denna. För att skapa ett förfarande i VBA, skriv "Sub WordMacroExample" (där "WordMacroExample" är ditt önskade makronamn) och tryck på STIGA PÅ. VBA lägger automatiskt till parentesen och Avsluta sub.
Word -dokumentobjekt
När du interagerar med Microsoft Word i VBA kommer du ofta att hänvisa till Word "objekt". De vanligaste objekten är:
Applikationsobjekt - Microsoft Word själv
Dokumentobjekt - Ett Word -dokument
Områdeobjekt - En del av ett Word -dokument
Urvalsobjekt - Ett valt område eller markörplats.
Ansökan
Applikationen är objektet på "toppnivå". Alla andra objekt i Word kan nås genom det.
Förutom åtkomst till andra Word-objekt finns det inställningar på applikationsnivå som kan tillämpas:
1 | Application.Options.AllowDragAndDrop = True |
Detta är ett exempel på att få tillgång till "Urvalet" av "Windows (1)" med i programmet:
1 | Application.Windows (1) .Selection.Characters.Count |
Men de vanligaste Word -objekten kan nås direkt utan att skriva hela hierarkin. Så istället kan du (och borde) bara skriva:
1 | Urval.Tecken.räkning |
Dokument
ActiveDocument
Ofta kommer du att ha två eller flera dokument öppnade i Word och du måste ange vilket specifikt Word -dokument som ska interagera med. Ett sätt att ange vilket dokument som ska användas ActiveDocument. Till exempel:
1 | ActiveDocument.PrintOut |
… skulle skriva ut ActiveDocument. ActiveDocument är dokumentet i Word som "har fokus"
För att byta ActiveDocument, använd kommandot Activate:
1 | Dokument ("Exempel.docx"). Aktivera |
Det här dokumentet
Istället för att använda ActiveDocument för att referera till det aktiva dokumentet kan du använda ThisDocument för att referera till dokumentet där makrot lagras. Detta dokument kommer aldrig att ändras.
1 | ThisDocument.PrintOut |
Dokumentvariabler
För mer komplicerade makron kan det dock vara svårt att hålla reda på det aktiva dokumentet. Det kan också vara frustrerande att växla fram och tillbaka mellan dokument.
Istället kan du använda dokumentvariabler.
Detta makro tilldelar ActiveDocument till en variabel och skriver sedan ut dokumentet med variabeln:
12345 | Sub VarExample ()Dim oDoc som dokumentAnge oDoc = ActiveDocumentoDoc.PrintOutAvsluta Sub |
Dokumentmetoder
Öppna dokument
Så här öppnar du ett Word -dokument:
1 | Documents.Open "c: \ Users \ SomeOne \ Desktop \ Test PM.docx" |
Vi rekommenderar att du alltid tilldelar ett dokument till en variabel när du öppnar det:
12 | Dim oDoc som dokumentAnge oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx") |
Skapa nytt dokument
Så här skapar du ett nytt Word -dokument:
1 | Documents.Add |
Vi kan instruera Word att skapa ett nytt dokument baserat på någon mall:
1 | Documents.Add Template: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx" |
Som alltid är det användbart och enormt problembesparande att tilldela variabel ett dokument när du skapar eller öppnar:
12 | Dim oDoc som dokumentAnge oDoc = Documents.Add (Mall: = "C: \ Program Files \ Microsoft Office \ Templates \ MyTemplate.dotx") |
Spara dokument
Så här sparar du ett dokument:
1 | ActiveDocument.Save |
eller SaveAs:
1 | ActiveDocument.SaveAs FileName: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument |
Stäng dokument
Så här stänger du ett dokument och sparar ändringar:
1 | ActiveDocument.Close wdSaveChanges |
eller utan att spara ändringar:
1 | ActiveDocument.Close wdDoNotSaveChanges |
Skriv ut dokument
Detta kommer att skriva ut det aktiva dokumentet:
1 | ActiveDocument.PrintOut |
Område, urval, stycken
Räckvidd och Urval är förmodligen de viktigaste objekten i Word VBA, säkert de mest använda.
Räckvidd avser en del av dokumentet, vanligtvis, men inte nödvändigtvis, text.
Urval avser markerad text (eller annat objekt som bilder) eller, om ingenting väljs, en infogningspunkt.
Stycken representerar stycken i dokumentet. Det är mindre viktigt än det låter, eftersom du inte direkt kan komma åt paragraftext (du måste komma åt ett visst styckeintervall för att göra ändringar).
Räckvidd
Området kan vara vilken del av dokumentet som helst, inklusive hela dokumentet:
12 | Dim oRange As RangeAnge oRange = ActiveDocument.Content |
eller så kan den vara liten som en karaktär.
Ett annat exempel, detta intervall skulle hänvisa till första ordet i dokumentet:
12 | Dim oRange As RangeAnge oRange = ActiveDocument.Range.Words (1) |
Vanligtvis skulle du vilja få intervall som refererar till specifik del av dokumentet och sedan ändra det.
I följande exempel gör vi det första ordet i andra stycket fet:
123 | Dim oRange As RangeAnge oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = Sant |
Ange intervalltext
Så här ställer du in textvärdet för ett intervall:
123 | Dim oRange As RangeAnge oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = ”Hej” |
(Tips: Notera blanksteget efter "Hej". Eftersom ordobjektet innehåller mellanslag efter ord, med bara "hej" skulle vi få "Hellonext -ord")
Det finns hundratals saker som du kan göra med intervall. Bara några exempel (dessa förutsätter att du redan har gjorts objektvariabel orange med hänvisning till intresseintervall):
Ändra teckensnitt
1 | oRange.Font.Name = "Arial" |
Visa i meddelanderutan antal tecken i ett visst intervall
1 | MsgBox oRange.Characters.Count |
Infoga lite text före den
1 | oRange.InsertBefore "detta är infogad text" |
Lägg till en fotnot i intervallet
12 | ActiveDocument.Footnotes.Add Range: = oRange, _Text: = "Läs mer på easyexcel.net." |
Kopiera den till Urklipp
1234 | oRange.CopyOfta måste du ändra till vad som är specifikt intervall som refererar. Så du kan börja med att börja och slutaoRange.Start = 5oRange.End = 50 |
Efter koden ovan hänvisar oRange till text som börjar med femte och slutar med 50: e tecknet i dokumentet.
Urval
Urval används ännu mer mycket än Räckvidd, eftersom det är lättare att arbeta med Urval än Områden, OM ditt makro ENDAST interagerar med ActiveDocument.
Välj först önskad del av ditt dokument. Välj till exempel det andra stycket i det aktiva dokumentet:
1 | ActiveDocument.Paragraphs (2) .Range.Select |
Sedan kan du använda markeringsobjektet för att skriva text:
1 | Selection.TypeText "Lite text" |
Vi kan skriva några stycken nedanför "Någon text":
12 | Selection.TypeText "Lite text"Selection.TypeParagraph |
Ofta är det nödvändigt att veta om någon text är markerad eller om vi bara har en infogningspunkt:
12345 | If Selection.Type wdSelectionIP ThenSelection.Font.Bold = TrueAnnanMsgBox "Du måste markera lite text."Avsluta om |
När vi arbetar med markeringsobjekt vill vi placera infogningspunkten på en viss plats och utfärda kommandon från denna punkt.
Början av dokument:
1 | Selection.HomeKey Unit: = wdStory, Extend: = wdMove |
Början av nuvarande rad:
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdMove |
Extend -parametern wdMove flyttar infogningspunkten. Istället kan du använda wdExtend som väljer all text mellan den aktuella infogningspunkten.
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdExtend |
Flytta markering
Den mest användbara metoden för att ändra position för införingspunkten är Flytta. För att flytta markering två tecken framåt:
1 | Selection.Move Unit: = wdCharacter, Count: = 2 |
för att flytta det bakåt, använd negativt tal för Count parameter:
1 | Selection.Move Unit: = wdCharacter, Count: =-2 |
Enhetsparameter kan vara wdCharacter, wdWord, wdLine eller mer (använd Word VBA -hjälp för att se andra).
För att flytta ord istället:
1 | Urval.Flytt enhet: = wdWord, Count: = 2 |
Urval är lättare att arbeta med (jämfört med intervall) eftersom det är som en robot som använder Word och efterliknar mänsklig användare. Där insättningspunkten är - någon åtgärd skulle ske. Men det betyder att du måste ta hand om var insättningspunkten är! Detta är inte lätt efter många steg i koden. Annars skulle Word ändra texten på inte önskad plats.
Om du behöver någon egenskap eller metod som inte är tillgänglig i markeringsobjektet kan du alltid enkelt få intervall som är associerat med urval:
1 | Ställ in oRange = Selection.Range |
TIPS: Användning Urval är ofta lättare än att använda intervall, men det är också långsammare (viktigt när du hanterar stora dokument)
Stycken
Du kan inte direkt använda styckeobjekt för att ändra text:
1 | ActiveDocument.Paragraphs (1) .Text = "Nej, det skulle inte fungera" |
Ovan fungerar inte (det kommer faktiskt att ge ett fel). Du måste först få intervall som är kopplat till ett visst stycke:
1 | ActiveDocument.Paragraphs (1) .Range.Text = "Det fungerar nu :)" |
Men du kan direkt ändra dess stil:
1 | ActiveDocument.Paragraphs (1) .Style = "Normal" |
eller ändra dess stycknivåformatering:
1 | ActiveDocument.Paragraphs (1) .LeftIndent = 10 |
eller kanske du vill behålla detta stycke på samma rad med nästa stycke:
1 | ActiveDocument.Paragraphs (1) .KeepWithNext = True |
Gör stycket centrerat:
1 | ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter |
Det är mycket användbart att tilldela ett visst stycke till objektvariabeln. Om vi tilldelar variabel ett särskilt stycke behöver vi inte oroa oss om det första stycket blir det andra eftersom vi infogade ett stycke före det:
12 | dim oPara som styckeSet oPara = Selection.Paragraphs (1) ‘här tilldelar vi första stycket i det aktuella urvalet till variabel |
Här är ett exempel där vi infogar ett stycke ovanför det första stycket, men vi kan fortfarande hänvisa till det gamla första stycket eftersom det tilldelades en variabel:
1234567 | Sub ParagraphExample ()Dim oPara As ParagraphAnge oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraph Innan 'Infoga styckeMsgBox oPara.Range.TextAvsluta Sub |
Styckeobjekt används mycket ofta i loopar:
123456789101112 | Sub LoopThroughParagraphs ()Dim oPara As ParagraphFör varje oPara i ActiveDocument.Paragraphs'gör något med det. Vi kommer bara att visa'paragraftext om dess stil är "Rubrik 4"Om oPara.Style = "Rubrik 4" DåMsgBox oPara.Range.TextAvsluta omNästa oParaAvsluta Sub |
Word VBA Tutorial Slutsats
Denna handledning täckte grunderna i Word VBA. Om du är ny på VBA bör du också granska vår allmänna VBA -handledning för att lära dig mer om variabler, loopar, meddelandeboxar, inställningar, villkorlig logik och mycket mer.
Word -makroexempel
Word -makroexempel |
---|
Mallar |
Lägg till nya dokument |
Räkna ord i urval |
Textboxar |
Spara som PDF |
Bokmärken |
Tabeller |
Hitta och hitta och ersätt |
Öppna dokument |
Vanliga frågor om Word VBA
Vad är ett Word -makro?
Ett makro är en allmän term som hänvisar till en uppsättning programmeringsinstruktioner som automatiserar uppgifter. Word -makron automatiserar uppgifter i Word med hjälp av programmeringsspråket VBA.
Har ordet VBA?
Ja, Microsoft Word har VBA -redigeraren. Den kan nås med genom att trycka på ALT + F11 eller genom att navigera till Developer> Visual Basic.
Hur använder jag VBA i Word?
1. Öppna VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå till Infoga> Modul för att skapa en kodmodul
3. Skriv "Sub HelloWorld" och tryck på Enter
4. Mellan raderna 'Sub HelloWorld' och 'End Sub' skriver du 'MsgBox' Hello World! '
5. Du har skapat ett makro!
6. Tryck nu på 'F5' för att köra makrot