Sådan automatiseres Microsoft Word ved at bruge Visual Basic til at oprette et nyt dokument

Sammenfatning

Denne artikel indeholder en trinvis beskrivelse af, hvordan du opretter et nyt dokument i Word ved hjælp af automatisering fra Visual Basic.

Eksempelkode

Eksempelkoden i denne artikel demonstrerer, hvordan du skal gøre følgende:
  • Indsætte afsnit med tekst og formatering.
  • Gennemse og ændre forskellige områder i et dokument.
  • Indsætte tabeller, formatere tabeller og udfylde tabellerne med data.
  • Tilføje et diagram
Følg disse trin for at oprette et nyt Word-dokument ved hjælp af automatisering fra Visual Basic:
  1. Opret et nyt standardprojekt af typen EXE i Visual Basic. Form1 oprettes som standard.
  2. Klik på Referencer i menuen Projekt, klik på en af følgende indstillinger, og klik derefter på OK:
    • Klik på Microsoft Word 12.0 Objektbibliotek i forbindelse med Office Word 2007.
    • Klik på Microsoft Word 11.0 Objektbibliotek i forbindelse med Word 2003.
    • Klik på Microsoft Word 10.0 Objektbibliotek i forbindelse med Word 2002.
    • Klik på Microsoft Word 9.0 Objektbibliotek i forbindelse med Word 2000.
  3. Føj kontrolelementet CommandButton til Form1.
  4. Føj følgende kode til klikhændelsen for Command1:
        Dim oWord As Word.Application
    Dim oDoc As Word.Document
    Dim oTable As Word.Table
    Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
    Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
    Dim oRng As Word.Range
    Dim oShape As Word.InlineShape
    Dim oChart As Object
    Dim Pos as Double

    'Start Word and open the document template.
    Set oWord = CreateObject("Word.Application")
    oWord.Visible = True
    Set oDoc = oWord.Documents.Add

    'Insert a paragraph at the beginning of the document.
    Set oPara1 = oDoc.Content.Paragraphs.Add
    oPara1.Range.Text = "Heading 1"
    oPara1.Range.Font.Bold = True
    oPara1.Format.SpaceAfter = 24 '24 pt spacing after paragraph.
    oPara1.Range.InsertParagraphAfter

    'Insert a paragraph at the end of the document.
    '** \endofdoc is a predefined bookmark.
    Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
    oPara2.Range.Text = "Heading 2"
    oPara2.Format.SpaceAfter = 6
    oPara2.Range.InsertParagraphAfter

    'Insert another paragraph.
    Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
    oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
    oPara3.Range.Font.Bold = False
    oPara3.Format.SpaceAfter = 24
    oPara3.Range.InsertParagraphAfter

    'Insert a 3 x 5 table, fill it with data and make the first row
    'bold,italic.
    Dim r As Integer, c As Integer
    Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 3, 5)
    oTable.Range.ParagraphFormat.SpaceAfter = 6
    For r = 1 To 3
    For c = 1 To 5
    oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
    Next
    Next
    oTable.Rows(1).Range.Font.Bold = True
    oTable.Rows(1).Range.Font.Italic = True

    'Add some text after the table.
    'oTable.Range.InsertParagraphAfter
    Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
    oPara4.Range.InsertParagraphBefore
    oPara4.Range.Text = "And here's another table:"
    oPara4.Format.SpaceAfter = 24
    oPara4.Range.InsertParagraphAfter

    'Insert a 5 x 2 table, fill it with data and change the column widths.
    Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 5, 2)
    oTable.Range.ParagraphFormat.SpaceAfter = 6
    For r = 1 To 5
    For c = 1 To 2
    oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
    Next
    Next
    oTable.Columns(1).Width = oWord.InchesToPoints(2) 'Change width of columns 1 & 2.
    oTable.Columns(2).Width = oWord.InchesToPoints(3)

    'Keep inserting text. When you get to 7 inches from top of the
    'document, insert a hard page break.
    Pos = oWord.InchesToPoints(7)
    oDoc.Bookmarks("\endofdoc").Range.InsertParagraphAfter
    Do
    Set oRng = oDoc.Bookmarks("\endofdoc").Range
    oRng.ParagraphFormat.SpaceAfter = 6
    oRng.InsertAfter "A line of text"
    oRng.InsertParagraphAfter
    Loop While Pos >= oRng.Information(wdVerticalPositionRelativeToPage)
    oRng.Collapse (wdCollapseEnd)
    oRng.InsertBreak wdPageBreak
    oRng.Collapse wdCollapseEnd
    oRng.InsertAfter "We're now on page 2. Here's my chart:"
    oRng.InsertParagraphAfter

    'Insert a chart and change the chart.
    Set oShape = oDoc.Bookmarks("\endofdoc").Range.InlineShapes.AddOLEObject( _
    ClassType:="MSGraph.Chart.8", FileName _
    :="", LinkToFile:=False, DisplayAsIcon:=False)
    Set oChart = oShape.OLEFormat.Object
    oChart.charttype = 4 'xlLine = 4
    oChart.Application.Update
    oChart.Application.Quit
    '... If desired, you can proceed from here using the Microsoft Graph
    'Object model on the oChart object to make additional changes to the
    'chart.
    oShape.Width = oWord.InchesToPoints(6.25)
    oShape.Height = oWord.InchesToPoints(3.57)

    'Add text after the chart.
    Set oRng = oDoc.Bookmarks("\endofdoc").Range
    oRng.InsertParagraphAfter
    oRng.InsertAfter "THE END."

    'All done. Unload this form.
    Unload Me
  5. Tryk på F5 for at køre programmet, og klik derefter på Command1.
Når koden er fuldført, skal du undersøge det dokument, der er blevet oprettet. Dokumentet indeholder to sider med formaterede afsnit, tabeller og et diagram.

Brug en skabelon

Hvis du benytter automatisering til oprettelse af dokumenter, der alle er i et almindeligt format, kan du drage fordel af at starte processen med et nyt dokument, der er baseret på en forudformateret skabelon. Der er to betydelige fordele ved at benytte en skabelon sammen med Word-automatiseringsklienten i stedet for at oprette et dokument fra bunden:
  • Du har større kontrol over formateringen og placeringen af objekter i dokumenterne.
  • Du kan oprette dokumenter med færre koder.
Ved at benytte en skabelon kan du finjustere placeringen af tabeller, afsnit og andre objekter i dokumentet samt medtage formatering af disse objekter. Ved at benytte automatisering kan du oprette et nyt dokument på baggrund af skabelonen med kode som vist nedenfor:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
I skabelonen kan du angive bogmærker, så automatiseringsklienten kan indsætte variabel tekst på en specifik placering i dokumentet som følger:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"
En anden fordel ved at benytte en skabelon er, at du kan oprette og gemme typografiformatering, som du vil anvende på kørselstidspunktet, som følger:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"
eller
oWord.Selection.Style = "MyStyle"

Referencer

Du kan finde flere oplysninger ved at klikke på nedenstående artikelnumre for at få vist artiklerne i Microsoft Knowledge Base:
220607 Sådan automatiseres Microsoft Word (fra Visual Basic) til at udføre brevfletning. Artiklen er evt. på engelsk.
285332 Sådan automatiseres Word med Visual Basic for at oprette brevfletning
285333 INFO: Demonstration af hændelseskode for brevfletning i Word 2002. Artiklen er evt. på engelsk.
Du finder flere oplysninger ved at besøge følgende websteder til Microsoft Developer Network (MSDN):
Microsoft Office Development with Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
(c) Microsoft Corporation 2001. Alle rettigheder forbeholdes. Bidrag af Lori B. Turner, Microsoft Corporation.

Egenskaber

Artikel-id: 313193 – Seneste udgave 23. nov. 2007 – Udgave 1

Feedback