Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Версию Microsoft Visual C# для .NET этой статьи см. в разделе 316384.
 

Сведения о версии этой статьи Microsoft Visual Basic 6.0 см. в разделе 313193.
 

Аннотация

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

Пример кода

В примере кода в этой статье показано, как сделать следующее:

  • Вставка абзацев с текстом и форматированием.

  • Просмотр и изменение различных диапазонов в документе.

  • Вставка таблиц, форматирование таблиц и заполнение таблиц данными.

  • Добавление диаграммы.

Чтобы создать документ Word с помощью службы автоматизации из Visual Basic .NET, выполните следующие действия.

  1. Запустите Microsoft Visual Studio .NET. В меню Файл выберите пункт Создать, а затем — Проект. В разделе Типы проектов выберите Проекты Visual Basic, а затем — Приложение Windows в разделе Шаблоны. Форма Form1 создается по умолчанию.

  2. Добавьте ссылку на библиотеку объектов Microsoft Word. Для этого выполните следующие действия:

    1. В меню Проект щелкните Добавить ссылку.

    2. На вкладке COM найдите библиотеку объектов Microsoft Word и нажмите кнопку Выбрать.

      Обратите внимание, что Microsoft Office 2003 и более поздние версии Office включают основные сборки взаимодействия (PIA). Microsoft Office XP не включает piA, но их можно скачать.
       

    3. Нажмите кнопку ОК в диалоговом окне Добавление ссылок, чтобы принять выбранные значения. Если появится запрос на создание оболочек для выбранных библиотек, нажмите кнопку Да.

  3. В меню Вид выберите Панель элементов, чтобы отобразить панель элементов, а затем добавьте кнопку в 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, чтобы выполнить сборку и запуск программы.

После завершения кода изучите документ, созданный для вас. Документ содержит две страницы отформатированных абзацев, таблиц и диаграммы.

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

Если вы используете службу автоматизации для создания документов в общем формате, вы можете начать процесс с нового документа, основанного на предварительно отформатованном шаблоне. Использование шаблона с клиентом службы автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:

  • Вы можете иметь больший контроль над форматированием и размещением объектов в документах.

  • Вы можете создавать документы с меньшим количеством кода.

С помощью шаблона можно точно настроить размещение таблиц, абзацев и других объектов в документе, а также включить форматирование этих объектов. С помощью службы автоматизации можно создать новый документ на основе шаблона с таким кодом:

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 Автоматизация Word для выполнения слияния из Visual Basic .NET

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×