В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету
Войти

Браузер не поддерживается

Чтобы использовать веб-сайт, обновите браузер.

Обновите браузер до последней версии Internet Explorer

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

Версия данной статьи для 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
word2002 word2k2 word10 wordxp wd2002 wd2k2 wd10 wdxp word2003 word2k3 word11 wd2003 wd2k3 wd11 word2007 word2k7 word12 wd2007 wd2k7 wd12
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.
Свойства

Номер статьи: 316383 — последний просмотр: 02/26/2014 17:33:00 — редакция: 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
Отзывы и предложения
ript>