Att använda MS-Word i Visual Basic
Förord
I denna kursen tänker jag beskriva hur man kan göra en enkel rapport i VB med hjälp av en mall i Word. Jag har själv använt funktionen för att skriva brev från ett kundregister, när användaren få upp dokumentet är mottagare, adress mm redan ifyllt. Det finns säkert många fler användningsområden, det är bara din fantasi som sätter begränsningen... Fördelen med denna metoden är att användaren kan redigera sin mall hur som helst utan att ta hjälp av mig som programmerare. Mallen består av ett vanligt Worddokument som man enkelt redigerar och formaterar i Word. Tekniken går ut på att man öppnar dokumentet från Visual Basic och byter ut vissa ord mot information som finns i ditt program, t.ex. från en databas.Innehåll
»»
Kodning
Börja med att sätta en referens till Microsoft Word i ditt projekt, detta gör du genom att gå in på Project>References... Där kryssar du för "Microsoft Word 9.0 Object Library" (9.0 avser Word 2000, om du har en annan version får du kryssa i den istället).För att åstadkomma rapporten behövs väldigt lite kod:
Dim WordRange As Word.Range
Set WordApp = CreateObject("Word.Application")
'Öppna mallen
WordApp.Documents.Open App.Path & "\mall.doc", , True, False
'Anger hela dokumentet som sökområde
Set WordRange = WordApp.ActiveDocument.Content
'Letar reda på strängen som skall bytas ut
WordRange.Find.Execute FindText:="", Forward:=True
'Om strängen hittas ersätts den
If WordRange.Find.Found = True Then
WordRange = "Förnamn Efternamn"
End If
'Visar Word-dokumentet
WordApp.Visible = True
Set WordRange = Nothing
Set WordDoc = Nothing
Set WordApp = Nothing
Ovanstående kod öppnar filen mall.doc som ligger i samma mapp som programmet. Sedan byts ordet "
'Anger hela dokumentet som sökområde
Set WordRange = WordApp.ActiveDocument.Content
'Letar reda på strängen som skall bytas ut
WordRange.Find.Execute FindText:="", Forward:=True
'Om strängen hittas ersätts den
If WordRange.Find.Found = True Then
WordRange = "Förnamn Efternamn"
End If
Till denna artikel finns ett färdigt exempel som du kan titta på.
Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter./Johan Djupmarker
Gunnar Feltborg
När jag testade detta program fick jag felmeddelandet: Run-time error '-2147023113(800706f7)' Method 'Execute' of object 'Find' failed