Automatizace aplikace Microsoft Word pomocí jazyka Visual Basic k vytvoření nového dokumentu
Souhrn
Tento podrobný článek popisuje, jak vytvořit nový dokument ve Wordu pomocí automatizace z jazyka Visual Basic.
Ukázkový kód
Ukázkový kód v tomto článku ukazuje, jak postupovat takto:
- Vložte odstavce s textem a formátováním.
- Umožňuje procházet a upravovat různé rozsahy v dokumentu.
- Vkládejte tabulky, formátujte tabulky a naplňte tabulky daty.
- Přidejte graf.
Chcete-li vytvořit nový dokument aplikace Word pomocí automatizace z jazyka Visual Basic, postupujte takto:
V jazyce Visual Basic vytvořte nový projekt Standard EXE. Formulář1 je ve výchozím nastavení vytvořen.
V nabídce Projekt klepněte na příkazOdkazy, klepněte na jednu z následujících možností a potom klepněte na tlačítko OK:
- V aplikaci Office Word 2007 klepněte na položku Knihovna objektů aplikace Microsoft Word 12.0.
- V aplikaci Word 2003 klepněte na položku Knihovna objektů aplikace Microsoft Word 11.0.
- V aplikaci Word 2002 klepněte na položku Knihovna objektů aplikace Microsoft Word 10.0.
- V aplikaci Word 2000 klepněte na položku Knihovna objektů aplikace Microsoft Word 9.0.
Přidejte ovládací prvek CommandButton do form1.
Přidejte následující kód do události Click pro 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
Stisknutím klávesy F5 spusťte program a potom klikněte na příkaz Command1.
Po dokončení kódu zkontrolujte dokument, který jste vytvořili za vás. Dokument obsahuje dvě stránky formátovaných odstavců, tabulek a grafu.
Použití šablony
Pokud k vytváření dokumentů ve společném formátu používáte službu Automation, můžete využít výhod zahájení procesu pomocí nového dokumentu založeného na předformátované šabloně. Použití šablony s klientem služby Word Automation má oproti vytváření dokumentu dvě významné výhody:
- Můžete mít větší kontrolu nad formátováním a umístěním objektů v dokumentech.
- Dokumenty můžete vytvářet s menším množstvím kódu.
Pomocí šablony můžete vyladit umístění tabulek, odstavců a dalších objektů v dokumentu a také formátování těchto objektů. Pomocí služby Automation můžete vytvořit nový dokument založený na šabloně s následujícím kódem:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
V šabloně můžete definovat záložky, aby klient služby Automation mohl vyplnit text proměnné v určitém umístění v dokumentu následujícím způsobem:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"
Další výhodou použití šablony je, že můžete vytvořit a uložit styly formátování, které chcete použít za běhu, a to následujícím způsobem:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"
nebo
oWord.Selection.Style = "MyStyle"
Odkazy
Další informace získáte v následujících článcích znalostní báze Microsoft Knowledge Base:
285332 Jak automatizovat Word 2002 pomocí jazyka Visual Basic vytvořit hromadnou korespondenci
Vývoj pro Microsoft Office pomocí sady Visual Studio
(c) Microsoft Corporation 2001, Všechna práva vyhrazena. Příspěvky lori B. Turner, Microsoft Corporation.