1
Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker via Udvikler-fanen, skal aktiveres... 11 Makrosikkerhed (Sikkerhedsindstillinger)...13 Makrosikkerhed, åbne dokumenter og makroer... 14 Makrosikkerhed i Sikkerhedscenter, sikker mappe... 14 Generelt omkring sikkerhed... 16 Oprette og gemme en makro...17 Optage en makro med makrooptageren... 17 Kigge på og forbede den genererede VBA-kode... 20 Gemme som *.docm, kopiere/flytte en makro... 23 Gemme som et dokument af typen.docm... 23 Kopiere/flytte makro til global skabelon.dotm... 24 Kopiere/flytte makro til global skabelon... 26 Slet makro/gemme i Normal.dotm-skabelon... 26 Slette en makro... 26 Gemme makro i Normal.dotm-skabelonen... 27 Visual Basic for Applications og VB-editoren...27 Visual Basic for Application versus Visual Basic... 27 Visual Basic-editoren... 28 VB-editoren (der er ikke nogen VBA-hjælp)... 29 VBA-kode er på engelsk... 31 VB-editor, Projekt/kode-vinduet samt moduler.32 Flyt en makro mellem moduler i VB-editoren... 32 Navngive makroer og moduler... 34 Omdøbe et modul via Egenskaber-vinduet... 35 Slette et modul... 37 De indbyggede makroer... 39 Standard-moduler versus klassemoduler...42 Klassemodul ThisDocument, hændelseprocedure... 42 Ændre Dokument-objektets egenskaber... 44 Makro, som skjuler/aktiverer Statuslinjen... 45 Hændelsesprocedure Document_open... 47 Hændelsesprocedure Document_New... 47 Hændelsesprocedure i ThisDocument... 48 Rækkevidden af en hændelsesprocedure... 49 Hold rede på dine hændelsesprocedurer... 49 Slette hændelsesprocedurer i ThisDocument... 49 2
Auto-makro i Word 2007 (hændelsesprocedurer).50 Finde informationer på support.microsoft.com... 50 Auto-makroer kan springes over... 51 Åbn sidste doc, gå til bogmærke (AutoExec)... 52 Optage en AutoExec-makro... 52 Kommentarer i VBA-koden samt AutoOpen... 55 AutoOpen, gå til bogmærke i dok, der åbnes... 55 Gå til første bogmærke i det aktive dokument... 57 Slet auto-makro, flyt koden i AutoExec-makroen... 58 Nyt bogmærke, fjern bogmærke-markeringen... 59 Autoclose-makro og MsgBox (brugerinput)... 60 Konverter auto-makro, sæt zoom i en makro... 61 Procedure versus funktion, MsgBox, VBA-hjælp.63 Procedure, funktion eller funktionsprocedure... 63 MsgBox-funktionen og VB-hjælp... 63 Syntaksen til MsgBox-funktionen... 64 Prompt (MsgBox-argument, ikke valgfrit)... 65 Buttons (knapper), MsgBox-argument, valgfrit... 65 Title (titel), MsgBox-argument, valgfrit... 72 Hjælp-fil, Context og dele en linje op i VB-editoren... 72 Procedurer (Sub, Private, Public...) og variabler.75 Variabler, variabeltyper, procedure med variabl... 76 En variabeltype kan erklæres af dig eller systemet... 76 Variabeltyper du har til rådighed... 78 Navngive variabler... 79 Mere om variabler, erklære variabeltyper (Dim)... 80 Sætninger til variabelerklæringer... 81 Variabeltyper (hvis du ikke erklærer nogen)... 82 Typeerklæringstegn for variabler... 82 Hvor oprettes variabler/kan moduler bruge alle... 83 Er det nu også variabler af typen Bytes... 83 Konstanter...85 Konstanter... 85 Hvad er en konstant... 85 Hvor oprettes de, og kan de bruges i alle moduler... 86 Arrays (datatabeller)...87 Numre på elementer i et array (Option Base 1)... 89 Vælge øvre og nedre grænse for et array... 89 Inputbox-funktionen (enkel brugerdialog)... 89 Array med flere dimensioner... 92 Split og Join: opdele og samle tekst... 93 Test af variabeltyper (Debug.Print)... 94 Debug.Print (Immediate-vinduet) i VB-editoren... 95 DateDiff-funktionen (tid mellem to datoer)... 96 3
4 Tvungen variabel-erklæring med Option Explicit... 97 Sortere ord i et array (bruge et array i praksis)... 98 Funktionsprocedurer (Functions), funktioner..100 Masser af indbyggede funktioner i Word 2007... 101 Modtagelse af variabler... 102 Rekursive kald... 103 Betingelser og løkker (kontrolstrukturer)...106 For...Next-løkker... 106 Do...Loop-løkker... 109 Mid-funktionen (trække tegn ud af streng, ændre)... 112 While...Wend-løkker... 115 For Each...Next-løkker... 116 If...Then-betingelse... 116 Select Case-betingelse... 121 Praktisk løkke-eks. (omformater ord i tekst)... 125 Trim-funktionen fjerner mellemrum... 125 Objekter i Word 2007 (hvad er et objekt)...128 Objekthierarkiet (Objektmodellen) i Word 2007... 128 Referencer til objekt (indbyggede dialogbokse)... 129 Dialogs-objektet (Words indbyggede dialogbokse)... 131 Objektvariabler samt Set-sætningen...133 Variabeltyper du kan bruge... 133 Set-sætningen (forbind variabel med objektreference)... 133 With-sætningen...135 Indsætte overskrift øverst og formatere overskriften... 135 Ændre sideopsætning m.m. for aktiv dokument... 137 Objekters egenskaber og metoder...140 Egenskaber i forskellige objekter via MSDN... 140 Egenskaber i forskellige objekter via VB-Hjælp... 145 Egenskaber i objekter via makrooptageren... 145 Metoder...147 Praktiske-eksempler med forskellige objekter.150 Oprette en indholdsfortegnelse... 150 Problemer med BuildingBlockEntries (hurtigdele)... 151 Kontroller, skabelon dokumentet er baseret på... 155 Assistent-dialogboksen (omdøb Normal.dotm)... 156 Åbne en bestemt mappe... 157 Arbejde med tabeller... 158 Omfattende hjælp til tabeller i VB-editoren... 158 Oprette ny tabel, indsæt tal i celler og formater... 159 Sortere i en tabel... 160 Finde og markere en tabel i et dokument... 160 Finde antallet af tabeller i det aktive dokument... 161
Userforms (brugerformularer), brugerdialoger.163 Hvad er en brugerformular... 163 Generelt om kontrolelementer... 164 Oprette en skabelon til en brugerformular...166 Indsæt tekst i skabelondokumentet (output)... 167 Oprette en brugerformular...168 Brugerformular/kontrolelementers egenskaber... 169 Document_New-, som åbner brugerformularen... 169 Test skabelon første gang (er indsat luk-knap)... 170 Indsætte og tilpasse kontrolelementer...172 Markere og kopiere flere kontrolelementer... 173 Omdimensioner kontrolelementer... 173 Værktøjslinjen Userform... 174 Kopier brugerformular, ændre baggrundsfarven... 174 Tilføj genvejstaster til dine kontrolelementer... 177 Default-egenskab til True, fremhæv kontrolelem... 178 Vælg Tab-rækkefølge for dine kontrolelementer... 178 VBA-kode til det første kontrolelement...180 Kontrol af brugerinput (hvad er Me)... 180 Indsæt VBA-kode i formularen... 181 Arbejde med den bagvedliggende kode... 181 Len-funktionen... 184 Brugerformular-knap (Makrooptageren)...185 VBA-koden til de resterende kontrolelementer.188 Åbn brugerformular, kontroller data i TextBox3... 188 Test data TextBox4 (tegn skal være gyldig dato)... 189 Initialisere indhold i brugerformularen... 190 Nulstille brugerformularen... 191 Annullere brugerformularen... 191 Overfør til dokument (OK-kommando-knappen)... 192 Indsæt Combobox kontrolelement i formularen.195 Inlineshape/Shape-objekter (billeder/figurer).201 Omdimensionere Inlineshape og Shape-objekter... 202 Formatere lys og kontrast i et billede... 205 Indsætte billede som Shape-objekt, placering... 206 Indsætte billedet (Shape-objekt) i et sidehoved... 208 Finde fejl i VBA-koden...210 De forskellige fejltyper... 210 Kompileringsfejl, syntaksfel (Auto Syntax Check)... 210 Runtime Errors (fejl under kodeafvikling)... 212 Logiske fejl... 213 Gennemgå koden linje for linje, Debug.print... 213 Sådan kører du en procedure linje for linje... 215 5
Se værdier for variabler m.m. i Locals Window... 216 Indsæt et programstop (Break)... 218 Sådan indsættes et Breakpoint... 218 Når VBA-koden er i Break- (programstop-tilstand)... 218 Fjerne Breakpoint... 218 I praksis... 219 Watch Window (overvåg)... 220 Sådan bruger du Watches... 220 En hurtig Quick Watch... 221 Tilføj Watch (der går i Break-tilstand) med højreklik... 222 Fejlhåndtering (lav en fejlhandler)...225 Hvor ser du de fejl, du kan fejlbehandle (fange)... 225 Err-objektet (generere runtime-fejl for at teste)... 226 Afslutning af en fejlhandler (Resume)... 228 Fejlhandler i praksis... 229 Andre Office-programmer (automatisering)...235 Hvad er automatisering... 235 Forbind til objekt-bibliotek, du vil arbejde med... 235 Opret en Excel 2007-server i Word 2007... 236 Sorter de to tabeller, som er hentet fra Excel 2007... 240 VBA-kode-forkortelser...245 Indeks...246 6
7
Forord Du skal i gang med en bog om Avanceret tekstbehandling i Microsoft Word 2007 med Visual Basic for Applications til Word 2007 for nye brugere, hvor det handler om at automatisere arbejdet med makroer og ikke mindst at kode i det bagved liggende programmeringssprog Visual Basic for Applications til Word 2007 (VBA). At programmere kan være rigtig sjovt, hvis man kan automatisere og effektivisere arbejdsopgaver for sig selv og kollegaer og især, hvis det går hurtigt og effektivt uden de store problemer, men kodningens natur er ikke altid sådan. Når du har løst en opgave, så sker det, at der kommer en flink person, der gerne lige vil have noget mere med uden at vedkommende er klar over, at det måske ikke lige er så enkelt at lave, som det lyder, men det er netop i sådanne situationer, du lærer mest, mens du udvikler den nye kode. Målgruppen til denne bog er nye brugere i forhold til VBA og i forhold til at programmere, men med en god praktisk viden om at bruge Word 2007. Bogen giver dig et grundigt indblik i, hvad der skal til for at kunne programmere i (VBA) inden for et Office 2007-program (her Word 2007) og mulighed for selv at komme i gang med det i praksis. Du får et overblik over og indsigt i, hvad forskellen er på at kunne gøre noget selv i forhold til at være total afhængig af Makro-optageren, og så følger der en hel del praktisk VBA-kode med, som du kan bruge med det samme og udvikle videre på. Du får indsigt i objektmodellen i Word 2007, og du kommer til at bruge mange forskellige objekter samt deres egenskaber og metoder i forbindelse med at løse praktiske opgaver i Word 2007 med VBA. Du får en grundig gennemgang af mange af de elementer, som følger med al programmering: bl.a. variabler, konstanter, booleske operatorer, løkker og strengværdier samt, hvordan du erklærer og bruger disse elementer til at løse mange forskellige praktiske opgaver. Kræver det så nogen forudsætninger for at gå i gang med denne bog? Ja, det kræver en god viden om, hvordan du løser forskellige opgaver i Word 2007. Hvis du har gennemgået de to tidligere videobøger "Word 2007 For nye brugere" samt "Word 2007 Grundlæggende", der begge er udkommet, så er du godt rustet til at gå i gang med at udvikle VBA-makroer i Word 2007 med denne online-bog. Bogen starter med, hvordan du opretter en makro med makrooptageren, som kan konvertere dine optagede taste- og musetryk til ægte VBA-kode i en færdig makro. I resten af bogen gennemgås de grundlæggende teknikker omkring VBA-programmering i Word 2007. Når du har gennemgået denne bog, er du bl.a. i stand til at: Skrive VBA-kode til makroer, som løser mange forskellige praktiske opgaver. Kontrollere og effektivisere VBA-kode optaget med makrooptageren. Arbejde med sikkerhed omkring makroer. Gemme og placere makroer på forskellige måder. Teste for og tage hånd om fejl i VBA-koden. 8