Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Управление приложением Word

    Создание нового экземпляра приложения Word из кода VBA Excel или подключение к открытому для работы с документами. Функции CreateObject и GetObject.

    Работа с Word из кода VBA Excel
    Часть 1. Управление приложением Word
    [Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

    Создание объекта Word.Application

    Экземпляр приложения Word необходим для того, чтобы с его помощью создавать новые документы или открывать существующие для редактирования из кода VBA Excel.

    Создать новый экземпляр объекта Word.Application можно при помощи раннего или позднего связывания, используя при позднем связывании функцию CreateObject. Подключиться к открытому экземпляру приложения Word можно только при помощи позднего связывания, используя функцию GetObject.

    Раннее связывание приложения Word

    Создание нового экземпляра Word.Application и присвоение ссылки на него переменной myWord:

    Для раннего связывания переменной с объектом Word.Application необходимо подключить в редакторе VBA Excel ссылку на библиотеку Microsoft Word Object Library, если она не подключена. Подключается ссылка в окне «References VBAproject», перейти в которое можно через главное меню редактора: Tools–>References…

    Раннее связывание позволяет при написании кода использовать лист подсказок для выбора и вставки свойств и методов привязанных объектов (Auto List Members). Если проект VBA Excel создается на заказ, то, после его завершения, раннее связывание следует заменить на позднее, так как на компьютере пользователя может не оказаться нужной библиотеки, и код работать не будет.

    Позднее связывание приложения Word

    Создание нового экземпляра Word.Application с помощью функции CreateObject и присвоение ссылки на него переменной myWord:

    Присвоение переменной myWord ссылки на открытый экземпляр приложения Word с помощью функции GetObject:

    Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Чтобы ее избежать, следует предусмотреть создание нового экземпляра Word.Application с помощью функции CreateObject, если открытое приложение не будет найдено (смотрите пример 3).

    В программы VBA Excel, работающие с Word, следует включать обработчик ошибок.

    Закрытие объекта Word.Application

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

    Если перед завершением процедуры VBA Excel необходимо приложение Word закрыть, используйте метод Quit:

    Если переменная не содержит ссылку на приложение (myWord = Nothing), метод Quit возвратит ошибку. Чтобы этого не произошло, перед применением метода Quit необходимо проверить наличие ссылки в переменной myWord (смотрите пример 3).

    Примеры открытия и закрытия Word

    Пример 1
    Создаем новый экземпляр объекта Word.Application с ранним связыванием и отображаем его на экране:

    Запустите код примера 1 на выполнение. Вы увидите появившийся на панели задач ярлык приложения Word. Перейдите на него и закройте приложение вручную.

    Пример 2
    Создаем новый экземпляр объекта Word.Application с поздним связыванием, отображаем его на экране, останавливаем программу и наблюдаем закрытие приложения методом Quit:

    Запустите код примера 2 на выполнение. Закройте информационное окно MsgBox и смотрите, как исчезнет с панели задач ярлык приложения Word, созданного перед остановкой кода.

    Пример 3
    Пытаемся создать ссылку на открытый экземпляр приложения Word с помощью функции GetObject, а если открытого экземпляра нет, создаем новый с помощью функции CreateObject:

    Строка On Error Resume Next передаст управление следующему оператору, если открытого экземпляра программы Word не существует, и выполнение функции GetObject приведет к ошибке. В этом случае будет создан новый экземпляр Word.Application с помощью функции CreateObject.

    В код добавлен обработчик ошибок On Error GoTo Instruk, который поможет корректно завершить программу при возникновении ошибки. А также он позволит во время тестирования не наплодить большое количество ненужных экземпляров приложения Word. Проверяйте их наличие по Диспетчеру задач (Ctrl+Shift+Esc) и удаляйте лишние.

    Строка Exit Sub завершит процедуру, если она прошла без ошибок. В случае возникновения ошибки, будет выполнен код после метки Instruk:.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    6 комментариев для “VBA Excel. Управление приложением Word”

    1. Добрый!
      Как открывать не Word а папку на диске? Ну, пусть диск C:\
      На что надо поменять Word.Application тут

      ?
      При этом, мне нужна проверка: если папка уже открыта, то не открывать её 2-й раз, а перемещать фокус в неё!

      1. Евгений

        Привет, Сергей!
        Для работы с папками и файлами используется объект FileSystemObject. Как открыть папку для просмотра, смотрите здесь.

    2. Дмитрий

      Приветствую. Прошу помощи, есть обычная задачка написания макроса для заполнения шаблона в Word.
      Всё хорошо, сделал, проверил — работает!

      НО реальный шаблон, оказался вордовским документом с защитой текста.
      То есть документ можно править ТОЛЬКО в тех полях, которые разрешены для записи.
      Мне соответственно эти поля и нужны.
      Но макрос выдаёт ошибку, как я понял файл по умолчанию открывается только для чтения.
      Как открыть подобные файлы в режим для записи ? (естественно только для разрешённых полей)

      1. Евгений

        Добрый день, Дмитрий!
        Я бы, в вашем случае, попробовал создать свой шаблон на основе исходного, скопировав содержимое исходного шаблона и вставив в пустой документ.

        1. Дмитрий

          Евгений, приветствую.
          Это простой выход, но он не подойдёт.
          Поскольку Юристы не примут других шаблонов.

        2. Дмитрий

          Мне нужно как бы нажать в Ворде в открытом документе: ВИД -> Изменить Документ

    Обсуждение закрыто.