Wie Automatisieren von Microsoft Word mit Visual Basic ein neues Dokument erstellen

Zusammenfassung

Dieser Artikel beschreibt, wie mithilfe der Automatisierung von Visual Basic ein neues Dokument in Word erstellen.

Beispielcode

Der Beispielcode in diesem Artikel veranschaulicht Folgendes:
  • Einfügen von Absätzen mit Text und Formatierung.
  • Durchsuchen und verschiedene Bereiche in einem Dokument ändern.
  • Tabellen einfügen, Tabellen formatieren und Tabellen mit Daten füllen.
  • Hinzufügen eines Diagramms.
Gehen Sie folgendermaßen vor, um ein Word-Dokument mithilfe der Automatisierung von Visual Basic zu erstellen:
  1. Erstellen Sie in Visual Basic ein neues Standard-EXE-Projekt. Form1 wird standardmäßig erstellt.
  2. Klicken Sie aufReferenzenim Menü Projekt klicken Sie auf eine der folgenden Optionen, und klicken Sie auf OK:
    • Office Word 2007 klicken Sie auf Microsoft Word 12.0 Object Library.
    • Klicken Sie auf Microsoft Word 11.0 Object Libraryfür Word 2003.
    • Klicken Sie auf Microsoft Word 10.0 Object Libraryfür Word 2002.
    • Klicken Sie für Word 2000 Microsoft Word 9.0 Object Library.
  3. Fügen Sie ein CommandButton-Steuerelement zu Form1 hinzu.
  4. Fügen Sie folgenden Code zum Click-Ereignis 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. Drücken Sie F5, um das Programm auszuführen, und klicken Sie dann auf Command1.
Nach abgeschlossener des Codes Ausführung überprüfen Sie das Dokument erstellt wurde. Das Dokument umfasst zwei Seiten mit formatierten Absätzen, Tabellen und einem Diagramm.

Verwenden einer Vorlage

Wenn Sie Dokumente erstellen, die alle in einem gängigen Format Automatisierung verwenden, profitieren Sie beginnen mit einem neuen Dokument, das auf einer vorformatierten Vorlage basiert. Eine Vorlage mit der Word-Automatisierung Client hat zwei entscheidende Vorteile in einem Dokument aus dem nichts erstellen:
  • Sie haben mehr Kontrolle über die Formatierung und die Platzierung von Objekten innerhalb Ihres Dokuments.
  • Sie können Ihre Dokumente mit weniger Code erstellen.
Mithilfe einer Vorlage können Sie die Platzierung von Tabellen, Absätzen und anderen Objekten in dem Dokument zu optimieren sowie Formatierung für diese Objekte. Mithilfe der Automatisierung können Sie ein neues Dokument basierend auf Ihrer Dokumentvorlage mit Code wie den folgenden erstellen:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
In der Vorlage können Sie Textmarken definieren, damit Ihr Automatisierungsclient Variablen Text an einer bestimmten Position im Dokument folgendermaßen ausfüllen kann:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"
Ein weiterer Vorteil der Verwendung einer Vorlage ist, erstellen und speichern, die Sie zur Laufzeit wie folgt anwenden möchten:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"
– oder –
oWord.Selection.Style = "MyStyle"

Referenzen

Weitere Informationen finden Sie zu die Artikeln der Microsoft Knowledge Base:
220607 wie Microsoft Word Seriendruck von Visual Basic automatisieren
285332 wie Automatisieren von Word 2002 mit Visual Basic zum Erstellen eines Seriendrucks
285333 INFO: Word 2002 MailMerge-Ereignis Code Demo
Weitere Informationen finden Sie auf folgenden Websites von Microsoft Developer Network (MSDN):
Microsoft Office-Entwicklung mit Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
(c) Microsoft Corporation 2001, alle Rechte vorbehalten. Beiträge von Lori B. Turner, Microsoft Corporation.

Eigenschaften

Artikelnummer: 313193 – Letzte Überarbeitung: 20.01.2017 – Revision: 2

Feedback