Visual Basic .NET: Взаимодействие с Microsoft Word 2000 и выше (исходники)

Источник: KByte
Хабибулин А.

Эта статья будет полезна только тем людям, у которых установлен Microsoft Word 2000 или выше! Мы научимся делать всё возможное с документами MS WORD при помощи VB 2003/2005 .NET.

Подключение библиотеки к проекту

  1. Создайте проект (Windows Application) В поле Name(Имя) введите Word (можно любое др. имя)
  2. В меню Project (Проект) выберите меню Add Reference (Добавить ссылку)
  3. В диалоговом окне Add Reference перейдите на вкладку COM и выберите в списке Microsoft Word 9.0 Object Library (или другую версию, это зависит от того, какая версия MS Word у вас установлена на компьютере), жмёте клавишу Enter
  4. Всё, библиотека Word уже включена в наш проект!

Работаем с MS Word

  1. Всё необходимое для работы мы уже сделали теперь для удобства работы с библиотекой Word необходимо ввести в General Declarations код:

Imports Word 'Импортируем пространство имён
Public Class Form1
End Class
  1. Создадим переменную для управления Word`ом:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Private Sub Form1_Load(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles MyBase.Load
    applicationWord = New Microsoft.Office.Interop.Word.Application
  End Sub
End Class

После выполнения кода, открывается приложение MS Word, но оно скрыто, для того, чтобы сделать его видимым впишите в событие Form_Load следующий код:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Private Sub Form1_Load(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles MyBase.Load
    applicationWord = New Microsoft.Office.Interop.Word.Application
    applicationWord.Visible = True
  End Sub
End Class

Но управлять содержимым документа MS Word с помощью переменной applicationWord, для управления содержимым документа создадим ещё одну переменную:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Dim documentWord As Microsoft.Office.Interop.Word.Document 'Объявляем переменную для работы с текстом и др. возможностями документа MS Word, 
например: Создаём таблицы; Меняем размер, цвет шрифта; и.т.д. Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Запускаем приложение MS Word applicationWord = New Microsoft.Office.Interop.Word.Application 'Делаем приложение MS Word видимым для пользователя (это делать не обязательно) applicationWord.Visible = True End Sub End Class
  1. Теперь создадим документ, дял этого введём следующий код:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Private Sub Form1_Load(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles MyBase.Load
    'Запускаем приложение MS Word
    applicationWord = New Microsoft.Office.Interop.Word.Application
    'Делаем приложение MS Word видимым для пользователя (это делать не обязательно)
    applicationWord.Visible = True
    'Объявляем переменную для работы с текстом и др. возможностями документа MS Word, например: Создаём таблицы; Меняем размер, цвет шрифта; и.т.д.
    Dim documentWord As Microsoft.Office.Interop.Word.Document = applicationWord.Documents.Add
  End Sub
End Class
  1. Всё, документ создан, теперь, попробуем написать в нём что-либо. Для этого воспоьзуемся объектом Range, который находится в переменной documentWord.Range, попробуем вписать туда имя вашего компьютера (только для VB 2005 .Net), для этого впишем следующий код:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Private Sub Form1_Load(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles MyBase.Load
    'Запускаем приложение MS Word
    applicationWord = New Microsoft.Office.Interop.Word.Application
    'Делаем приложение MS Word видимым для пользователя (это делать не обязательно)
    applicationWord.Visible = True
    'Объявляем переменную для работы с текстом и др. возможностями документа MS Word, например: Создаём таблицы; Меняем размер, цвет шрифта; и.т.д.
    Dim documentWord As Microsoft.Office.Interop.Word.Document = applicationWord.Documents.Add
    'Range - это, можно сказать, тело документа имеет все свойства для работы с текстом в документе MS Word
    With documentWord.Range
      'Устанавливаем имя шрифта
      .Font.Name = "Arial"
      'Устанавливаем цвет шрифта
      .Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
      .Font.Size = "12" 'Устанавливаем размер шрифта
      'меняем текст документа на традиционную надпись "Привет Мир!!!"
      .Text = My.User.Name
    End With
  End Sub
End Class
  1. Ещё немного об объекте Range. Допустим, нам необходимо вставить текст перед тем текстом который у нас уже есть в документе, или после этого текста, даже может внутри текста, для этого есть дополнительные свойства объекта Range, ниже я привёл примеры вставки текста до, после и внутри уже существующего текста:

Imports Word 'Импортируем пространство имён
Public Class Form1
  Dim applicationWord As Microsoft.Office.Interop.Word.Application
  Private Sub Form1_Load(ByVal sender As System.Object, _
                         ByVal e As System.EventArgs) Handles MyBase.Load
    'Запускаем приложение MS Word
    applicationWord = New Microsoft.Office.Interop.Word.Application
    'Делаем приложение MS Word видимым для пользователя (это делать не обязательно)
    applicationWord.Visible = True
    'Объявляем переменную для работы с текстом и др. возможностями документа MS Word, например: Создаём таблицы; Меняем размер, цвет шрифта; и.т.д.
    Dim documentWord As Microsoft.Office.Interop.Word.Document = applicationWord.Documents.Add
    'Range - это, можно сказать, тело документа имеет все свойства для работы с текстом в документе MS Word
    With documentWord.Range
      .Font.Name = "Arial" 'Устанавливаем имя шрифта
      'Устанавливаем цвет шрифта
      .Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
      .Font.Size = "12" 'Устанавливаем размер шрифта
      .Text = "KByte.ru"
    End With
    documentWord.Range(0, 0).Text = "Вас Приветствует " 'До существующего текста
    documentWord.Range(Len("KByte.ru") + Len("Вас Приветствует "), Len("KByte.ru") + Len("Вас Приветствует ")).Text = ": Привет!" 'После Существующего текста
  End Sub
End Class
  1. Печать содержимого документа производится пр помощи этого кода:

documentWord.PrintOut

  1. Предварительный просмотр перед печатью производится пр помощи этого кода:

documentWord.PrintPreview()

  1. Сохранять документ можнно при помощи этого кода:

documentWord.SaveAs(FileName:="C:\MyDocument.doc")

  1. Выход из MS Word осуществляется при помощи этого кода:

applicationWord.Quit()

Вот в принципе и всё!


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=3314