Автоматизация создания документов в Word с помощью Visual Basic .NET

Переводы статьи Переводы статьи
Код статьи: 316383 - Vizualiza?i produsele pentru care se aplic? acest articol.
Версия данной статьи для Microsoft Visual C# .NET: 316384.
Версия данной статьи для Microsoft Visual Basic 6.0: 313193.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье подробно рассматривается создание документов Word с помощью возможностей автоматизации Visual Basic.

Пример кода

Следующий пример кода показывает, как это сделать:
  • Вставка абзацев с определенными параметрами форматирования.
  • Модификация диапазонов в рамках документа.
  • Вставка, форматирование и заполнение таблиц.
  • Добавление диаграммы.
Для создания документа Word с помощью Visual Basic необходимо выполнить следующие действия.
  1. Запустите приложение Microsoft Visual Studio .NET. В меню Файл выберите команду Создать, а затем — Проект. В списке Типы проектов выберите проект Проекты Visual Basic, а затем в разделе Шаблоны — элемент Приложение Windows. По умолчанию будет создана форма Form1.
  2. Добавьте ссылку на объектную библиотеку Microsoft Word Object Library. Для этого выполните следующие действия:
    1. В меню Проект выберите команду Добавить ссылку.
    2. На вкладке COM выделите библиотеку Microsoft Word Object Library и нажмите кнопку Выбрать.

      Примечание. В состав Microsoft Office 2003 и более поздних версий набора Office входят основные сборки взаимодействия (PIA). Набор Microsoft Office XP не включает эти сборки, но их можно загрузить. Чтобы узнать больше об основных сборках взаимодействия PIA для Office XP, щелкните номер следующей статьи базы знаний Майкрософт:
      328912 Загрузка основных сборок взаимодействия (PIA) для набора Microsoft Office XP
    3. Для подтверждения сделанного выбора нажмите кнопку OK в диалоговом окне Add References. Если появится запрос на создание оберток для выбранных библиотек, нажмите кнопку Yes.
  3. Для отображения панели элементов выберите в меню View элемент Toolbox и добавьте кнопку в форму Form1.
  4. Дважды щелкните кнопку Button1. Появится окно программного кода формы.
  5. В окне кода замените следующий код:
        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub
    этим кодом:
        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
  6. Добавьте следующий код в верхнюю часть файла Form1.vb:
    Imports Word = Microsoft.Office.Interop.Word
  7. Чтобы построить и запустить программу, нажмите клавишу F5.
После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблицы и диаграмму.

Использование шаблона

Если вы используете автоматизацию для построения документов в одинаковом формате, вы можете запустить процесс с новым документом на основе предварительно отформатированного шаблона. Использование шаблона имеет два существенных преимущества по сравнению с созданием документа с нуля.
  • Разработчик более полно контролирует формат и расположение объектов в документах.
  • Уменьшается размер программного кода, который нужен для создания документа.
Вы можете точно указать место расположения и формат объектов (например таблиц и абзацев) в рамках документа, а также включить форматирование этих объектов. Ниже приведен пример программного кода для автоматизации создания документа на основе шаблона.
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
Следующий программный код позволяет определить в шаблоне метки, по которым клиент автоматизации вставит произвольный текст в документ.
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Еще одно преимущество использования шаблонов состоит в том, что вы можете создавать и сохранять стили форматирования, которые используются на этапе выполнения программы.
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
-или-
oWord.Selection.Style = "MyStyle"

Ссылки

За дополнительными сведениями об использовании Visual Basic .NET для автоматизации Microsoft Word обратитесь к следующей статье базы знаний Майкрософт:
301656 Автоматизация Microsoft Word для слияния почты из Visual Basic .NET.
Дополнительные сведения см. на следующих веб-сайтах Microsoft Developer Network (MSDN):
Использование Visual Studio для разработки в Microsoft Office
http://msdn.microsoft.com/ru-ru/library/aa188489(office.10).aspx

Word в составе набора Office
http://msdn.microsoft.com/ru-ru/library/aa201330(office.11).aspx

Дополнительно о программе Word
http://msdn.microsoft.com/ru-ru/library/aa201332(office.11).aspx
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Свойства

Код статьи: 316383 - Последний отзыв: 26 февраля 2014 г. - Revision: 1.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2010
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic 2005 Express Edition
  • Microsoft Visual Basic 2008 Express Edition
  • Microsoft Visual Basic 2010 Express
Ключевые слова: 
kbexpertiseinter kbautomation kbhowtomaster KB316383

Отправить отзыв

 

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