Markering af område
Nu skal vi rigtig i gang med programmeringen! Første udfordring er at markere et område. Det centrale objekt i arbejdet i Word VBA hedder Selection og Selection bruges til valg af område, formatering mm.
Selection.Goto
Ja, Selection.Goto bruges sjovt nok til at flytte cursoren rundt i dokumentet. Syntaksen er
Selection.GoTo(What, Which, Count, Name)
Og et par eksempler:
Opgave | Løsning |
Flyt til bogmærke | Selection.GoTo What:=wdGoToBookMark, Name:="Navn på bogmærke" |
Flyt til første celle i den næste tabel | Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext |
Flyt 4 linjer ned | Selection.GoTo What:=wdGoToLine, Which:=wdGoToRalative, Count:=4 |
Flyt 2 sider baglæns | Selection.GoTo What:=wdGoToPage, Which:=wdGoToPrevious, Count:=2 |
Flyt til slutningen af dokumentet | Selection.GoTo What:=wdGoToLine, Which:=wdGoToLast |
Bemærk hvordan der overføres informationer til GoTo metoden. GoTo metoden forventer 4 parametre: GoTo(What, Which, Count, Name). I stedet for at overføre alle 4 parametre i den rækkefølge de forventes kan man nøjes med at overføre de parametre man faktisk vil overføre og ved at bruge notationen med := kan man overføre dem i den rækkefølge man ønsker.
Selection.Move
Minder om Selection.Goto, men vil altid sørge for at der ikke er nogen markering, men kun en cursor, der så er flyttet som angivet
Selection.Move(Unit, Count)
Unit kan have værdierne wdCharacter, wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable, wdLine.
Selection.Move Unit:=wdCell, Count:=3 - flytter cursoren 3 celler frem i tabellen
Selection.Collapse
Når man f.eks. bruger Selection.Goto til at flytte cursoren til et bogmærke, der står noget i, vil hele teksten i bogmærket være markeret efterfølgende. I den situation (og sikkert også andre) kan man være interesseret i at få indskrænket markeringen så cursoren står lige før eller lige efter markeringen. Og ja, det gør man med Selection.Collapse. Syntaksen er:
Selection.Collapse Direction:= retning
Retning kan have to værdier wdCollapseEnd eller wdCollapseStart.
Selection.Expand
Tilsvarende kan man være interesseret i at udvide den markering man arbejder på - det gør man med Selection.Expand.
Selection.Expand Unit:=enhed
Enhed kan have værdierne wdCharacter, wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable.
Nyttige samlinger
Det findes nogle nyttige objektsamlinger, der blandt andet er knyttet til Selection objektet, som man også kan arbejde med når man skal navigere rundt i et dokument:
Samling | Indhold |
.Bookmarks | En samling af bogmærker. Selection.Bookmarks(1) peger på det første bogmærke i dokumentet |
.Cells | Hvis markøren står i en tabel indeholder Cells samlingen alle celler i tabellen |
.Characters | Indeholder alle tegn i dokumentet. Selection.Characters(1) peger på det første bogstav i det markerede område |
.Columns | Hvis markøren står i en tabel indeholder Columns alle kolonner i tabellen |
.Comments | Indeholder alle kommentarer i det markerede område |
.Endnotes | Alle slutnoter i det markerede område |
.Fields | Felter. ActiveDocument.Fields.Update - opdaterer alle felter i det aktive dokument |
.Footnotes | Som EndNotes - alle fodnoter i området |
.FormFields | Alle form felter i markeringen. ActiveDocument.FormFields("Text1").Result = "Navn" - sætter indholdet af "Text1" til "Navn" |
.Frames | Alle rammer i markeringen |
.Hyperlinks | Alle links i markeringen. Selection.Hyperlinks(1).Follow vil følge første hyperlink i det markerede område |
.InlineShapes | Ja, det er nok alle InlineShapes i dokumentet. Tekstbokse, tegninger og lign. er InlineShapes |
.Paragraphs | Afsnit i markeringen. Selection.Paragraphs(1).LineSpacingRule = wdLineSpaceDouble - sætter dobbelt linjeafstand i første afsnit i markeringen |
.Rows | Hvis markøren står i en tabel indeholder Rows alle rækker i tabellen. ActiveDocument.Tables(1).Rows(2).Delete - sletter række 2 i 1. tabel i dokumentet |
.Sections | Sektioner i markeringen |
.Sentences | Sætninger i markeringen. ActiveDocument.Sentences(1).Copy kopierer første sætning i dokumentet |
.SmartTags | SmartTags i området |
.Tables | Tabeller i det markerede område |
.Words | En samling af de ord, der står i det markerede område. Selection.Words.Count tæller antal ord i markeringen. |
Selection.Information
Vil man gerne vide, hvor i dokumentet cursoren står kan man bruge Selection.Information.
Selection.Information(Type)
Type kan have en meget lang række forskellige værdier afhængig af hvilken information man gerne vil have, så jeg vil nøjes med et par eksempler og så i øvrigt henvise til VBA hjælpefunktionen
MsgBox "Markeringen er på side " & _
Selection.Information(wdActiveEndPageNumber) & " af sider " _
& Selection.Information(wdNumberOfPagesInDocument)
Eller
If Selection.Information(wdWithInTable) Then _
Selection.Tables(1).Select