Automatisera Microsoft Word med hjälp av Visual Basic för att skapa ett nytt dokument

Supporten för Office 2003 har upphört

Microsoft upphörde med supporten för Office 2003 den 8 april 2014. Denna ändring påverkar dina programuppdateringar och säkerhetsalternativ. Läs om vad detta innebär för dig och hur du behåller skyddet.

Sammanfattning
I den här artikeln beskrivs steg för steg hur du skapar ett nytt dokument i Word med hjälp av Automation från Visual Basic.

Kodexempel

Kodexemplen i den här artikeln visar hur du gör följande:
  • Infogar stycken med text och formatering.
  • Bläddrar bland och ändrar olika områden inom ett dokument.
  • Infogar tabeller, formaterar tabeller och fyller tabeller med data.
  • Lägger till ett diagram.
Så här skapar du 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å ReferencesProject-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 Object Library.
    • För Word 2003 klickar du på Microsoft Word 11.0 Object Library.
    • För Word 2002 klickar du på Microsoft Word 10.0 Object Library.
    • För Word 2000 klickar du på Microsoft Word 9.0 Object Library.
  3. Lägg till en CommandButton-kontroll i Form1.
  4. Lägg till följande kod till Click-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. Kör programmet genom att trycka på F5, och klicka sedan på Command1.
När koden har körts klart granskar du dokumentet som har skapats. Det innehåller två sidor med formaterade stycken, tabeller och ett diagram.

Använd en mall

Om du använder Automation för att skapa dokument i ett gemensamt format kan det vara lämpligt 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å viktiga fördelar mot att skapa ett dokument från grunden:
  • Du har större kontroll över formatering och placering av objekt i dina dokument.
  • Du kan skapa dina dokument med mindre kod.
Genom att använda 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 som baseras på din mall med kod av följande slag:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"				
I din mall kan du definiera bokmärken så att Automation-klienten kan fylla i variabel text på en viss plats i dokumentet, på följande vis:
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 format du vill tillämpa vid körningstillfället, på följande vis:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"				
eller
oWord.Selection.Style = "MyStyle"				
Referenser
Om du vill veta mer klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
220607 Automatisera Microsoft Word för koppling av dokument från Visual Basic (Länken kan leda till en webbplats som är helt eller delvis på engelska)
285332 Så här automatiserar du Word med Visual Basic för att skapa ett kopplat dokument
285333 INFO: Exempel på händelsekod för koppling av dokument i Word 2002 (Länken kan leda till en webbplats som är helt eller delvis på engelska)
Ytterligare information finns på följande MSDN-webbplatser (Microsoft Developer Network):
Microsoft Office Development with Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
(c) Microsoft Corporation 2001, Med ensamrätt. Bidrag av Lori B. Turner, Microsoft Corporation.

WD2007
Egenskaper

Artikel-id: 313193 – senaste granskning 11/23/2007 12:32:00 – revision: 6.0

Microsoft Visual Basic 6.0 Professional Edition, Microsoft Office Word 2007, Microsoft Office Word 2003, Microsoft Word 2002 Standard Edition, Microsoft Word 2000 Standard Edition

  • kbhowtomaster kbautomation kbexpertiseinter KB313193
Feedback