Создание нового документа Word или открытие существующего из кода VBA Excel. Методы Documents.Add и Documents.Open. Сохранение и закрытие документа.
Работа с Word из кода VBA Excel
Часть 2. Создание и открытие документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Создание нового документа Word
Новый документ Word создается из кода VBA Excel с помощью метода Documents.Add:
1 2 3 4 5 6 |
Sub Test1() Dim myWord As New Word.Application Dim myDocument As Word.Document Set myDocument = myWord.Documents.Add myWord.Visible = True End Sub |
Переменную myDocument можно объявить с типом Object, но тогда не будет ранней привязки к типу Word.Document и подсказок при написании кода (Auto List Members).
Открытие существующего документа
Существующий документ Word открывается из кода VBA Excel с помощью метода Documents.Open:
1 2 3 4 5 6 7 |
Sub Test2() Dim myWord As New Word.Application Dim myDocument As Word.Document Set myDocument = _ myWord.Documents.Open("C:\Документ1.docx") myWord.Visible = True End Sub |
Замените в этой процедуре строку «C:\Документ1.docx» на адрес своего файла.
Подключение к открытому документу
Присвоение переменной ссылки на существующий экземпляр Word.Application осуществляется в VBA Excel с помощью функции GetObject:
1 2 3 4 5 6 7 8 9 10 |
Sub Test3() Dim myWord As Object, myDoc As Word.Document On Error GoTo Instruk Set myWord = GetObject(, "Word.Application") Set myDoc = myWord.Documents("Документ1.docx") myDoc.Range.InsertAfter "Добавляем новый текст, подтверждающий подключение к открытому документу." Exit Sub Instruk: MsgBox "Произошла ошибка: " & Err.Description End Sub |
Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Также произойдет ошибка, если не будет найден указанный документ (в примере — «Документ1.docx»).
Сохранение и закрытие документа
Сохранение нового документа
Чтобы сохранить из кода VBA Excel новый документ Word, используйте метод SaveAs2 объекта Document:
1 |
myDocument.SaveAs2 ("C:\Документ2.docx") |
Замените «C:\Документ2.docx» на путь к нужному каталогу с именем файла, под которым вы хотите сохранить новый документ.
Сохранение изменений в открытом документа
Сохраняйте изменения в существующем документе с помощью метода Document.Save или параметра SaveChanges метода Document.Close:
1 2 3 4 5 6 7 8 9 10 11 |
'Сохранение изменений документа myDocument.Save 'Сохранение изменений документа 'при закрытии myDocument.Close 'по умолчанию True myDocument.Close True myDocument.Close wdSaveChanges 'Закрытие документа без 'сохранения изменений myDocument.Close False myDocument.Close wdDoNotSaveChanges |
Закрытие любого сохраненного документа
1 |
myDocument.Close |
Метод Document.Close закрывает документ, но не приложение. Если работа с приложением закончена, оно закрывается с помощью метода Application.Quit.
При попытке создания документа возникает ошибка user-defined type not defined в чем может быть проблема
Проверьте, подключена ли у вас библиотека объектов Word (Microsoft Word Object Library). Из главного меню: Tools >> References…
Да спасибо, все заработало. А также хотел узнать у меня почему — то нет метода saveas а есть saveas2
Так и должно быть. В Excel – метод Workbook.SaveAs, в Word – метод Document.SaveAs2. Хотя Document.SaveAs тоже работает, правильнее будет использовать Document.SaveAs2. В статье тоже поправил, чтобы не было таких неувязок.
Подскажите, пожалуйста, я подключил библиотеку Microsoft Word 12.0 (у меня MS Excel 2007)
Но при запуске процедуры выходит сообщение об ошибке:
Run-time error ‘429’:
ActiveX component can’t create object
Как это можно исправить?
Вопрос снят, я свою задачу сейчас решил вот таким способом:
Обсуждение закрыто.