Eine Microsoft Visual C# .NET-Version dieses Artikels finden Sie unter 316384.
Eine Microsoft Visual Basic 6.0-Version dieses Artikels finden Sie unter 313193.
Zusammenfassung
In diesem Schritt-für-Schritt-Artikel wird beschrieben, wie Sie ein neues Dokument in Word mithilfe der Automatisierung von Visual Basic .NET erstellen.
Beispielcode
Der Beispielcode in diesem Artikel veranschaulicht die folgenden Schritte:
-
Fügen Sie Absätze mit Text und Formatierung ein.
-
Durchsuchen und Ändern verschiedener Bereiche innerhalb eines Dokuments.
-
Fügen Sie Tabellen ein, formatieren Sie Tabellen, und füllen Sie die Tabellen mit Daten auf.
-
Fügen Sie ein Diagramm hinzu.
Führen Sie die folgenden Schritte aus, um ein neues Word-Dokument mithilfe von Automation aus Visual Basic .NET zu erstellen:
-
Starten Sie Microsoft Visual Studio .NET. Klicken Sie im Menü Datei auf Neu und dann auf Projekt. Klicken Sie unter Projekttypen auf Visual Basic-Projekte und dann unter Vorlagen auf Windows-Anwendung. Form1 wird standardmäßig erstellt.
-
Fügen Sie einen Verweis auf die Microsoft Word-Objektbibliothek hinzu. Gehen Sie dazu wie folgt vor:
-
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
-
Suchen Sie auf der Registerkarte COM die Microsoft Word-Objektbibliothek, und klicken Sie auf Auswählen.
Hinweis Microsoft Office 2003 und höhere Versionen von Office enthalten primäre Interopassemblys (PIAs). Microsoft Office XP enthält keine PIAs, aber sie können heruntergeladen werden.
-
Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu übernehmen. Wenn Sie aufgefordert werden, Wrapper für die ausgewählten Bibliotheken zu generieren, klicken Sie auf Ja.
-
-
Wählen Sie im Menü Ansicht die Option Toolbox aus, um die Toolbox anzuzeigen, und fügen Sie dann Form1 eine Schaltfläche hinzu.
-
Doppelklicken Sie auf Button1. Das Codefenster für das Formular wird angezeigt.
-
Ersetzen Sie im Codefenster den folgenden Code:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
Mit:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 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. oWord = CreateObject("Word.Application") oWord.Visible = True oDoc = oWord.Documents.Add 'Insert a paragraph at the beginning of the document. 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. oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) oPara2.Range.Text = "Heading 2" oPara2.Format.SpaceAfter = 6 oPara2.Range.InsertParagraphAfter() 'Insert another paragraph. oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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 and italic. Dim r As Integer, c As Integer oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Range.Font.Bold = True oTable.Rows.Item(1).Range.Font.Italic = True 'Add some text after the table. 'oTable.Range.InsertParagraphAfter() oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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. oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Width = oWord.InchesToPoints(2) 'Change width of columns 1 & 2 oTable.Columns.Item(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.Item("\endofdoc").Range.InsertParagraphAfter() Do oRng = oDoc.Bookmarks.Item("\endofdoc").Range oRng.ParagraphFormat.SpaceAfter = 6 oRng.InsertAfter("A line of text") oRng.InsertParagraphAfter() Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage) oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd) oRng.InsertBreak(Word.WdBreakType.wdPageBreak) oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd) oRng.InsertAfter("We're now on page 2. Here's my chart:") oRng.InsertParagraphAfter() 'Insert a chart and change the chart. oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _ ClassType:="MSGraph.Chart.8", FileName _ :="", LinkToFile:=False, DisplayAsIcon:=False) 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. oRng = oDoc.Bookmarks.Item("\endofdoc").Range oRng.InsertParagraphAfter() oRng.InsertAfter("THE END.") 'All done. Close this form. Me.Close() End Sub
-
Fügen Sie den folgenden Code am Anfang von Form1.vb hinzu:
Imports Word = Microsoft.Office.Interop.Word
-
Drücken Sie F5, um das Programm zu erstellen und auszuführen.
Untersuchen Sie nach Abschluss des Codes das Dokument, das für Sie erstellt wird. Das Dokument enthält zwei Seiten mit formatierten Absätzen, Tabellen und einem Diagramm.
Verwenden einer Vorlage
Wenn Sie Automation verwenden, um Dokumente zu erstellen, die alle in einem gemeinsamen Format vorliegen, können Sie davon profitieren, den Prozess mit einem neuen Dokument zu starten, das auf einer vorformatierten Vorlage basiert. Die Verwendung einer Vorlage mit Ihrem Word Automation-Client hat zwei wesentliche Vorteile gegenüber dem Erstellen eines Dokuments aus dem Nichts:
-
Sie können die Formatierung und Platzierung von Objekten in Ihren Dokumenten besser steuern.
-
Sie können Ihre Dokumente mit weniger Code erstellen.
Mithilfe einer Vorlage können Sie die Platzierung von Tabellen, Absätzen und anderen Objekten innerhalb des Dokuments optimieren und formatierungen für diese Objekte einschließen. Mithilfe von Automation können Sie ein neues Dokument erstellen, das auf Ihrer Vorlage mit Code wie dem folgenden basiert:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
In Ihrer Vorlage können Sie Lesezeichen definieren, damit Ihr Automation-Client variablen Text an einer bestimmten Stelle im Dokument wie folgt ausfüllen kann:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Ein weiterer Vorteil der Verwendung einer Vorlage besteht darin, dass Sie Formatierungsstile erstellen und speichern können, die Sie zur Laufzeit anwenden möchten, wie folgt:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
- oder -
oWord.Selection.Style = "MyStyle"
Informationsquellen
Weitere Informationen zur Verwendung von Visual Basic .NET zum Automatisieren von Microsoft Word finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
301656 Automatisieren von Word zum Ausführen eines Seriendrucks aus Visual Basic .NET