Word -makroexempel och VBA -handledning

Välkommen till vår Word VBA / Makro Mega-guide!

Denna sida innehåller:

    1. Word VBA -handledning PDF (gratis nedladdning)
    2. Word VBA ”Cheat Sheet” som innehåller en lista över de mest använda Word VBA -kodavsnitten
    3. Fullständig Word VBA / makrohandledning.
    4. 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: = wdStory
Urval. 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 Document
Ange 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 variant
varNumberPages = _
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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave