Så här automatiserar du Microsoft Word med hjälp av Visual Basic för att skapa ett nytt dokument

Sammanfattning

Den här stegvisa artikeln beskriver hur du skapar ett nytt dokument i Word med hjälp av Automation från Visual Basic.

Exempelkod

Exempelkoden i den här artikeln visar hur du gör följande:

  • Infoga stycken med text och formatering.
  • Bläddra bland och ändra olika intervall i ett dokument.
  • Infoga tabeller, formatera tabeller och fyll i tabellerna med data.
  • Lägg till ett diagram.

Följ dessa steg om du vill skapa ett nytt Word-dokument med hjälp av Automation från Visual Basic:

  1. Skapa ett nytt Standard EXE-projekt i Visual Basic. Form1 skapas som standard.

  2. Klicka påReferenserProjekt-menyn, klicka på något av följande alternativ och klicka sedan på OK:

    • För Office Word 2007 klickar du på Microsoft Word 12.0-objektbibliotek.
    • För Word 2003 klickar du på Microsoft Word 11.0-objektbibliotek.
    • För Word 2002 klickar du på Microsoft Word 10.0-objektbibliotek.
    • För Word 2000 klickar du på Microsoft Word 9.0-objektbibliotek.
  3. Lägg till en CommandButton-kontroll i Form1.

  4. Lägg till följande kod i klicka-händelsen för 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. Tryck på F5 för att köra programmet och klicka sedan på Kommando1.

När koden har slutförts undersöker du dokumentet som skapades åt dig. Dokumentet innehåller två sidor med formaterade stycken, tabeller och ett diagram.

Använda en mall

Om du använder Automation för att skapa dokument som alla har ett gemensamt format kan du dra nytta av att starta processen med ett nytt dokument som baseras på en förformaterad mall. Att använda en mall med Word Automation-klienten har två betydande fördelar jämfört med att skapa ett dokument från ingenting:

  • Du kan ha större kontroll över formatering och placering av objekt i dina dokument.
  • Du kan skapa dokument med mindre kod.

Med hjälp av en mall kan du finjustera placeringen av tabeller, stycken och andra objekt i dokumentet, samt inkludera formatering för dessa objekt. Med Hjälp av Automation kan du skapa ett nytt dokument baserat på din mall med kod, till exempel följande:

oWord.Documents.Add "<Path to your template>\MyTemplate.dot"

I mallen kan du definiera bokmärken så att Automation-klienten kan fylla i variabeltext på en specifik plats i dokumentet enligt följande:

oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"

En annan fördel med att använda en mall är att du kan skapa och lagra formatmallar som du vill använda vid körning, enligt följande:

oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"

eller

oWord.Selection.Style = "MyStyle"

Referenser

Om du vill ha mer information klickar du på artikelnumren nedan för att visa artiklarna i Microsoft Knowledge Base:

285332 Så här automatiserar du Word 2002 med Visual Basic för att skapa en koppla dokument

Microsoft Office-utveckling med Visual Studio

(c) Microsoft Corporation 2001, Med ensamrätt. Bidrag från Lori B. Turner, Microsoft Corporation.