Как автоматизировать Microsoft Word с помощью Visual Basic для создания нового документа
Аннотация
В этой пошаговой статье описывается создание нового документа в Word с помощью службы автоматизации из Visual Basic.
Пример кода
В примере кода в этой статье показано, как сделать следующее:
- Вставка абзацев с текстом и форматированием.
- Просмотр и изменение различных диапазонов в документе.
- Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
- Добавление диаграммы.
Чтобы создать документ Word с помощью службы автоматизации из Visual Basic, выполните следующие действия.
В Visual Basic создайте проект EXE уровня "Стандартный". Form1 создается по умолчанию.
В меню "Проект " щелкните "Ссылки", выберите один из следующих параметров и нажмите кнопку " ОК":
- Для Office Word 2007 щелкните библиотеку объектов Microsoft Word 12.0.
- В Word 2003 щелкните библиотеку объектов Microsoft Word 11.0.
- В Word 2002 щелкните библиотеку объектов Microsoft Word 10.0.
- Для Word 2000 щелкните библиотеку объектов Microsoft Word 9.0.
Добавьте элемент управления CommandButton в Form1.
Добавьте следующий код в событие Click для 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
Нажмите клавишу F5, чтобы запустить программу, а затем нажмите кнопку Command1.
После завершения кода изучите созданный документ. Документ содержит две страницы форматированных абзацев, таблиц и диаграмм.
Использование шаблона
Если вы используете службу автоматизации для создания документов в общем формате, вы можете начать процесс с нового документа, основанного на предварительно сформированных шаблонах. Использование шаблона с клиентом word Automation имеет два существенных преимущества по сравнению с созданием документа из ничего:
- Вы можете иметь более полный контроль над форматированием и размещением объектов в документах.
- Вы можете создавать документы с меньшим объемом кода.
С помощью шаблона можно точно настроить размещение таблиц, абзацев и других объектов в документе, а также включить форматирование для этих объектов. С помощью службы автоматизации можно создать новый документ на основе шаблона с помощью следующего кода:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
В шаблоне можно определить закладки, чтобы клиент службы автоматизации заполнял текст переменной в определенном месте документа следующим образом:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"
Еще одно преимущество использования шаблона заключается в том, что вы можете создавать и хранить стили форматирования, которые вы хотите применить во время выполнения, следующим образом:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"
или
oWord.Selection.Style = "MyStyle"
Ссылки
Для получения дополнительных сведений щелкните приведенные ниже номера статей, чтобы просмотреть статьи в базе знаний Майкрософт:
285332 Как автоматизировать Word 2002 с помощью Visual Basic для создания слияния
Разработка Microsoft Office с помощью Visual Studio
(c) Microsoft Corporation 2001, все права зарезервированы. Участие: Лори Б. Тертер (Lori B. Turner), корпорация Майкрософт.