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

Artikelöversättning Artikelöversättning
Artikel-id: 313193 - Visa produkter som artikeln gäller.
Visa alla | Dölj alla

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.

Egenskaper

Artikel-id: 313193 - Senaste granskning: den 23 november 2007 - Revision: 6.0
Informationen i denna artikel gäller:
  • 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
Nyckelord: 
kbhowtomaster kbautomation kbexpertiseinter KB313193

Ge feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com