Создание нового документа Word или открытие существующего из кода VBA Excel. Методы Documents.Add и Documents.Open. Сохранение и закрытие документа.
Работа с Word из кода VBA Excel
Часть 2. Создание и открытие документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Новый документ Word создается из кода VBA Excel с помощью метода Documents.Add:
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:
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:
Sub Test3() Dim myWord As Object, myDoc As Word.Document On Error GoTo Instr Set myWord = GetObject(, «Word.Application») Set myDoc = myWord.Documents(«Документ1.docx») myDoc.Range.InsertAfter «Добавляем новый текст, подтверждающий подключение к открытому документу.» Exit Sub Instr: MsgBox «Произошла ошибка: « & Err.Description End Sub |
Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Также произойдет ошибка, если не будет найден указанный документ (в примере — «Документ1.docx»).
Сохранение и закрытие документа
Сохранение нового документа
Чтобы сохранить из кода VBA Excel новый документ Word, используйте метод SaveAs2 объекта Document:
myDocument.SaveAs2 («C:Документ2.docx») |
Замените «C:Документ2.docx» на путь к нужному каталогу с именем файла, под которым вы хотите сохранить новый документ.
Сохранение изменений в открытом документа
Сохраняйте изменения в существующем документе с помощью метода Document.Save или параметра SaveChanges метода Document.Close:
‘Сохранение изменений документа myDocument.Save ‘Сохранение изменений документа ‘при закрытии myDocument.Close ‘по умолчанию True myDocument.Close True myDocument.Close wdSaveChanges ‘Закрытие документа без ‘сохранения изменений myDocument.Close False myDocument.Close wdDoNotSaveChanges |
Закрытие любого сохраненного документа
Метод Document.Close закрывает документ, но не приложение. Если работа с приложением закончена, оно закрывается с помощью метода Application.Quit.
ASSEI 0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
||||
1 |
||||
Excel 18.05.2020, 20:54. Показов 3865. Ответов 25 Метки нет (Все метки)
Ребята не пойму почему не сохраняется документ в папку:
0 |
2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,141 |
|
18.05.2020, 21:08 |
2 |
ASSEI,
Selection.Rows.Row ???
0 |
Модератор 11341 / 4660 / 748 Регистрация: 07.08.2010 Сообщений: 13,496 Записей в блоге: 4 |
|
18.05.2020, 21:19 |
3 |
On Error Resume Next для начала закомменте эту строку — она не дает увидеть ошибки
1 |
0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
|
18.05.2020, 21:20 [ТС] |
4 |
да , вроде записывает
0 |
Модератор 11341 / 4660 / 748 Регистрация: 07.08.2010 Сообщений: 13,496 Записей в блоге: 4 |
|
18.05.2020, 21:23 |
5 |
Set objWrdDoc = objWrdApp.Documents.Open(App.Path & «МФО.docm») добавлять надо через шаблон ….. add(…..dotx/dotm)
1 |
ASSEI 0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
||||
18.05.2020, 21:43 [ТС] |
6 |
|||
у меня ошибку выдает, когда закоментировал
Добавлено через 55 секунд Добавлено через 12 минут
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
18.05.2020, 21:50 |
7 |
ASSEI, Если не обращать внимание на извращения, которые Вы упрямо копируете из темы в тему, то задайтесь вопросом, откуда в VBA может взяться App.Path ? ибо App это об’ект из «чистого» VB. А если документ находится в той же папке, что и книга, то ThisWorkbook.Path
1 |
ASSEI 0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
||||
18.05.2020, 22:30 [ТС] |
8 |
|||
согласен невнимателен, хотел пойти по пути наименьшего сопративления и просто как вы и сказали просто скопировать Добавлено через 28 минут
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
18.05.2020, 22:52 |
9 |
|||
1 |
0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
|
19.05.2020, 19:56 [ТС] |
10 |
Ребята подскажите пожалуйста столкнулся с таким моментом что не каждую строку сохраняет в папку ? какие мысли по данному поводу? бывает где то на 500 тых не сохраняет а на 1000-х работает
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.05.2020, 19:59 |
11 |
что не каждую строку сохраняет в папку ?
If Target.Cells.Count > 1 Then Exit Sub Что здесь удивительного, Вы сами ограничили выполнения макроса, сейчас только после выделения одной единственной ячейки.
0 |
Модератор 11341 / 4660 / 748 Регистрация: 07.08.2010 Сообщений: 13,496 Записей в блоге: 4 |
|
19.05.2020, 20:01 |
12 |
бывает где то на 500 тых не сохраняет а на 1000-х работает в ворде может быть только 63 столбца, причем надо еще убирать 3,8мм полей
0 |
0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
|
19.05.2020, 20:09 [ТС] |
13 |
ага, не понял но еще поясню, на листе в таблице около 5000 строк, но получается что некоторые строки записываются в документ НО не сохраняется сам документ в папку т.е.
0 |
0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
|
19.05.2020, 20:15 [ТС] |
14 |
посмотрите замысел во вложении, и таких строк в книге около 5000
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.05.2020, 20:15 |
15 |
ASSEI, И здесь тоже нет ничего удивительного, ведь имя файла не может содержать некоторые символы. А ячейка может, поэтому, перед сохранением нужно удалять мусор из имени файла.
0 |
0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
|
19.05.2020, 20:45 [ТС] |
16 |
так то все работает, но вот иногда такое бывает, Добавлено через 17 минут Добавлено через 12 минут
0 |
Модератор 11341 / 4660 / 748 Регистрация: 07.08.2010 Сообщений: 13,496 Записей в блоге: 4 |
|
19.05.2020, 21:08 |
17 |
на листе в таблице около 5000 строк это примерно 70 страниц — для ворда это много, не каждый комп потянет Добавлено через 2 минуты
посчитал 11300 т строк а это 11300/70=160страниц — тем более, особенно если автоподбор ширины столбцов(из личного опыта) Добавлено через 2 минуты
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.05.2020, 21:28 |
18 |
shanemac51, Что ж Вас так перемкнуло на количестве строк, ведь видно, что одна строка = один документ. А проблема — именно в наличии недопустимых символах в имени файла.
0 |
ASSEI 0 / 1 / 3 Регистрация: 18.10.2012 Сообщений: 662 |
||||
19.05.2020, 21:31 [ТС] |
19 |
|||
Добавлено через 12 минут так я и отметил что да проблема именно в символах, но не получается, то пробелов лишних много
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
19.05.2020, 21:37 |
20 |
|||||||
ASSEI, Имя файла это переменная txt, поэтому в строке #11
и, разумеется, функция, удаляющая весь мусор :
1 |
Уважаемые форумчане, вынужден обратиться с вопросом следующего характера:
С Вашей же помощью мне удалось из кусочков составить код, который при запуске осуществляет копирование данных с листа Excelи вставляет эти данные на вновь созданный лист Word.
Но мне не удается реализовать заключительный этап своего замысла – мне необходимо вновь созданный файл Word предложить пользователю сохранить в исходной папке (папка где размещается файл Excel) с заготовкой имени файла. При этом команда на сохранение должна отдаваться именно пользователем, а не сохранятся автоматически.
Очень хочу реализовать свой замысел именно следующим образом:
1. Запуск макроса из книги Excel.
2. Копирование данных.
3. Создание листа Word.
4. Вставка данных на лист Word.
5. Вызов диалогового окна для сохранения файла с возможностью редактировать имя файла перед его сохранением. Путь сохранения (по умолчанию) должен быть предложен в папку, в которой сохранен Исходный файл Excel. – здесь мне требуется Ваша помощь!!!
6. После сохранения Пользователем файла завершение работы макроса.
Мне удалось найти решение этой задачи, но только в коде VBA для Word. Перечитал очень много тем, но так и не смог перевести данный код на понятный язык для Excel
Код |
---|
Sub MyFileSave() ' если запускать данный код из Word, то он полностью решает мою проблему Dim sPath As String sPath = ActiveDocument.Path & "" 'sPath = ActiveWorkbook.Path & "" ' для Excel, сэтимвродеудалосьразобраться With Dialogs(wdDialogFileSaveAs) ' а вот здесь при запуске макроса вылетает ошибка. .Name = sPath & "Переченьработ_" & Left(ActiveDocument.Paragraphs(2).Range.Text, Len(ActiveDocument.Paragraphs(2).Range.Text) - 1) .Show End With End Sub |
Очень прошу Вас помочь мне!
Спасибо!
Данная тема близка к моей проблеме
, но использовать под свои нужды не смог, так как в диалоговом окне не возможно выбрать расширение файла, а это мне тоже необходимо.
Пример прилагаю.
Содержание
- Метод Document.SaveAs2 (Word)
- Синтаксис
- Параметры
- Возвращаемое значение
- Пример
- См. также
- Поддержка и обратная связь
- Работа с объектами документа
- Создание нового документа
- Открытие документа
- Сохранение существующего документа
- Сохранение нового документа
- Закрытие документов
- Активация документа
- Определение того, открыт ли документ
- Ссылка на активный документ
- Поддержка и обратная связь
- Метод Documents.Save (Word)
- Синтаксис
- Параметры
- Замечания
- Поддержка и обратная связь
- Document.SaveAs2 method (Word)
- Syntax
- Parameters
- Return value
- Example
- See also
- Support and feedback
Метод Document.SaveAs2 (Word)
Сохраняет указанный документ с новым именем или форматом. Некоторые аргументы для этого метода соответствуют параметрам в диалоговом окне Сохранить как (вкладка Файл ).
Синтаксис
выражение. SaveAs2 ( _FileName_ , _FileFormat_ , _LockComments_ , _Password_ , _AddToRecentFiles_ , _WritePassword_ , _ReadOnlyRecommended_ , _EmbedTrueTypeFonts_ , _SaveNativePictureFormat_ , _SaveFormsData_ , _SaveAsAOCELetter_ , _Encoding_ , _InsertLineBreaks_ , _AllowSubstitutions_ , _LineEnding_ , _AddBiDiMarks_ , _CompatibilityMode_ )
Выражение Выражение, возвращающее объект Document .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание | ||
---|---|---|---|---|---|
FileName | Необязательный | Variant | Имя документа. По умолчанию используется текущая папка и имя файла. Если документ никогда не сохранялся, используется имя по умолчанию (например, Doc1.doc). Если документ с указанным именем файла уже существует, документ перезаписывается без запроса пользователя. | ||
FileFormat | Необязательный | Variant | Формат, в котором сохраняется документ. Может быть любой константой WdSaveFormat . Чтобы сохранить документ в другом формате, укажите соответствующее значение для свойства SaveFormat объекта FileConverter . | ||
LockComments | Необязательный | Variant | Значение true , чтобы заблокировать документ для комментариев. Значение по умолчанию — false. | ||
Password | Необязательный | Variant | Строка пароля для открытия документа. (См. примечания ниже.) | ||
AddToRecentFiles | Необязательный | Variant | Значение true , чтобы добавить документ в список недавно использовавшихся файлов в меню Файл . По умолчанию используется значение True. | ||
WritePassword | Необязательный | Variant | Строка пароля для сохранения изменений в документе. (См. примечания ниже.) | ||
ReadOnlyRecommended | Необязательный | Variant | Значение true , чтобы microsoft Word предлагал состояние только для чтения при открытии документа. Значение по умолчанию — false. | ||
EmbedTrueTypeFonts | Необязательный | Variant | Значение true , чтобы сохранить шрифты TrueType в документе. Если этот параметр опущен, аргумент EmbedTrueTypeFonts принимает значение свойства EmbedTrueTypeFonts . | ||
SaveNativePictureFormat | Необязательный | Variant | Если графика была импортирована с другой платформы (например, Macintosh), значение True используется для сохранения только версии импортированной графики Microsoft Windows. | ||
SaveFormsData | Необязательный | Variant | Значение true для сохранения данных, введенных пользователем в форме в виде записи. | ||
SaveAsAOCELetter | Необязательный | Variant | Если к документу прикреплен почтовый адрес, значение True , чтобы сохранить документ как письмо AOCE (почтовый ящик сохраняется). | ||
Encoding | Необязательный | Variant | Кодовая страница или кодировка, используемая для документов, сохраненных в виде закодированных текстовых файлов. По умолчанию используется системная кодовая страница. С этим параметром нельзя использовать все константы MsoEncoding . | ||
InsertLineBreaks | Необязательный | Variant | Если документ сохраняется как текстовый файл, значение True для вставки разрывов строк в конце каждой строки текста. | ||
AllowSubstitutions | Необязательный | Variant | Если документ сохраняется в виде текстового файла, значение True позволяет Word заменить некоторые символы текстом, похожим на текст. Например, если символ авторских прав отображается как (c). Значение по умолчанию — false. | ||
LineEnding | Необязательный | Variant | Способ, который Word помечает строки и разрывы абзаца в документах, сохраненных в виде текстовых файлов. Может быть одной из следующих констант WdLineEndingType : wdCRLF (по умолчанию) или wdCROnly. | ||
AddBiDiMarks | Необязательный | Variant | True добавляет управляющие символы в выходной файл, чтобы сохранить двунаправленный макет текста в исходном документе. | ||
CompatibilityMode | Необязательный | Variant | Режим совместимости, который Word использует при открытии документа. Константа WdCompatibilityMode .
|
Возвращаемое значение
Пример
В следующем примере кода активный документ сохраняется как Test.rtf в формате RTF.
В следующем примере кода активный документ сохраняется в текстовом формате с расширением «.txt».
В следующем примере кода выполняется цикл по всем установленным преобразователям, и если он находит преобразователь WordPerfect 6.0, он сохраняет активный документ с помощью преобразователя.
В следующем примере кода показана процедура, которая сохраняет документ с паролем.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Работа с объектами документа
В Visual Basic методы изменения файлов являются методами объекта Document или коллекции Documents . В этом разделе приведены примеры Visual Basic, связанные с задачами, определенными в следующих разделах.
Создание нового документа
Коллекция Documents включает все открытые документы. Чтобы создать документ, используйте метод Add , чтобы добавить объект Document в коллекцию Documents . Следующая инструкция создает документ.
Лучший способ создания документа — назначить возвращаемое значение переменной объекта. Метод Add возвращает объект Document , который ссылается на новый документ. В следующем примере объект Document , возвращенный методом Add , назначается переменной объекта . Затем задаются несколько свойств и методов объекта Document . Вы можете легко управлять новым документом с помощью объектной переменной.
Открытие документа
Чтобы открыть существующий документ, используйте метод Open с коллекцией Documents . Следующая инструкция открывает документ с именем Sample.doc, расположенный в папке MyFolder.
Сохранение существующего документа
Чтобы сохранить один документ, используйте метод Save с объектом Document . Следующая инструкция сохраняет документ с именем Sales.doc.
Вы можете сохранить все открытые документы, применив метод Save к коллекции Documents . Следующая инструкция сохраняет все открытые документы.
Сохранение нового документа
Чтобы сохранить один документ, используйте метод SaveAs2 с объектом Document . Следующая инструкция сохраняет активный документ как «Temp.doc» в текущей папке.
Аргумент FileName может включать только имя файла или полный путь (например, «C:DocumentsTemporary File.doc»).
Закрытие документов
Чтобы закрыть один документ, используйте метод Close с объектом Document . Следующая инструкция закрывает и сохраняет документ с именем Sales.doc.
Вы можете закрыть все открытые документы, применив метод Close коллекции Documents . Следующая инструкция закрывает все документы без сохранения изменений.
В следующем примере пользователю предлагается сохранить каждый документ перед закрытием документа.
Активация документа
Чтобы изменить активный документ, используйте метод Activate с объектом Document . Следующая инструкция активирует открытый документ с именем Sales.doc.
Определение того, открыт ли документ
Чтобы определить, открыт ли документ, можно перечислить коллекцию Documents с помощью параметра For Each. Следующая инструкция. В следующем примере документ с именем Sample.doc активируется, если документ открыт, или открывается Sample.doc, если он в настоящее время не открыт.
Ссылка на активный документ
Вместо ссылки на документ по имени или по номеру индекса, например, Documents(«Sales.doc») свойство ActiveDocument возвращает объект Document , ссылающийся на активный документ (документ с фокусом). В следующем примере отображается имя активного документа или, если документы не открыты, отображается сообщение.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Метод Documents.Save (Word)
Сохраняет все документы в коллекции Документы .
Синтаксис
expression. Сохранить (NoPrompt, OriginalFormat)
выражение (обязательно). Переменная, представляющая объект Documents .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
NoPrompt | Необязательный | Variant | True , чтобы Word автоматически сохранял все документы. Значение false , чтобы приложение Word запрашивало у пользователя запрос на сохранение каждого документа, измененного с момента последнего сохранения. |
OriginalFormat | Необязательный | Variant | Указывает способ сохранения документов. Может быть одной из констант WdOriginalFormat . |
Замечания
Если документ не был сохранен ранее, в диалоговом окне Сохранить как пользователю будет предложено ввести имя файла.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Document.SaveAs2 method (Word)
Saves the specified document with a new name or format. Some of the arguments for this method correspond to the options in the Save As dialog box (File tab).
Syntax
expression. SaveAs2 ( _FileName_ , _FileFormat_ , _LockComments_ , _Password_ , _AddToRecentFiles_ , _WritePassword_ , _ReadOnlyRecommended_ , _EmbedTrueTypeFonts_ , _SaveNativePictureFormat_ , _SaveFormsData_ , _SaveAsAOCELetter_ , _Encoding_ , _InsertLineBreaks_ , _AllowSubstitutions_ , _LineEnding_ , _AddBiDiMarks_ , _CompatibilityMode_ )
expression An expression that returns a Document object.
Parameters
Name | Required/Optional | Data type | Description | ||
---|---|---|---|---|---|
FileName | Optional | Variant | The name for the document. The default is the current folder and file name. If the document has never been saved, the default name is used (for example, Doc1.doc). If a document with the specified file name already exists, the document is overwritten without prompting the user. | ||
FileFormat | Optional | Variant | The format in which the document is saved. Can be any WdSaveFormat constant. To save a document in another format, specify the appropriate value for the SaveFormat property of the FileConverter object. | ||
LockComments | Optional | Variant | True to lock the document for comments. The default is False. | ||
Password | Optional | Variant | A password string for opening the document. (See Remarks below.) | ||
AddToRecentFiles | Optional | Variant | True to add the document to the list of recently used files on the File menu. The default is True. | ||
WritePassword | Optional | Variant | A password string for saving changes to the document. (See Remarks below.) | ||
ReadOnlyRecommended | Optional | Variant | True to have Microsoft Word suggest read-only status whenever the document is opened. The default is False. | ||
EmbedTrueTypeFonts | Optional | Variant | True to save TrueType fonts with the document. If omitted, the EmbedTrueTypeFonts argument assumes the value of the EmbedTrueTypeFonts property. | ||
SaveNativePictureFormat | Optional | Variant | If graphics were imported from another platform (for example, Macintosh), True to save only the Microsoft Windows version of the imported graphics. | ||
SaveFormsData | Optional | Variant | True to save the data entered by a user in a form as a record. | ||
SaveAsAOCELetter | Optional | Variant | If the document has an attached mailer, True to save the document as an AOCE letter (the mailer is saved). | ||
Encoding | Optional | Variant | The code page, or character set, to use for documents saved as encoded text files. The default is the system code page. You cannot use all MsoEncoding constants with this parameter. | ||
InsertLineBreaks | Optional | Variant | If the document is saved as a text file, True to insert line breaks at the end of each line of text. | ||
AllowSubstitutions | Optional | Variant | If the document is saved as a text file, True allows Word to replace some symbols with text that looks similar. For example, displaying the copyright symbol as (c). The default is False. | ||
LineEnding | Optional | Variant | The way Word marks the line and paragraph breaks in documents saved as text files. Can be one of the following WdLineEndingType constants: wdCRLF (default) or wdCROnly. | ||
AddBiDiMarks | Optional | Variant | True adds control characters to the output file to preserve bi-directional layout of the text in the original document. | ||
CompatibilityMode | Optional | Variant | The compatibility mode that Word uses when opening the document. WdCompatibilityMode constant.
|
Return value
Example
The following code example saves the active document as Test.rtf in rich-text format (RTF).
The following code example saves the active document in text-file format with the extension «.txt».
The following code example loops through all the installed converters, and if it finds the WordPerfect 6.0 converter, it saves the active document using the converter.
The following code example shows a procedure that saves a document with a password.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Using Excel VBA to read and write Microsoft Word documents
These examples are written and tested in Excel 2003.
Create, Write and Close Word Document
Read and Append
Create, Write and Close Word Document
The following code illustrates the use of Excel VBA to create a Microsoft Word Document and save it to disk.
This script will create a document in your My Documents folder.
'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running. Option Explicit Sub CreateNewWordDoc() Dim wdApp As Word.Application Dim wdDoc As Word.Document Set wdApp = CreateObject("Word.Application") Dim myFile As String 'Alternatively, we can use Late Binding 'Dim wdApp As Object 'Dim wdDoc As Object 'Set wdApp = CreateObject("word.Application") wdApp.Visible = True Set wdDoc = wdApp.Documents.Add ' define a place to put file myFile = Environ("UserProfile") & "My Documents" & "MyWordDoc.docx" ' or like this myFile = Environ("UserProfile") & "Documents" & "MyWordDoc.docx" ' have to wrap name in quotes here because directory contains a space If Dir("""&myFile&""") <> "" Then ' kill = delete existing file Kill """&myFile&""" End If With wdDoc .Content.InsertAfter "Hello World" .Content.InsertParagraphAfter .SaveAs myFile .Close End With wdApp.Quit Set wdDoc = Nothing Set wdApp = Nothing End Sub
Some VBA Vocabulary
Option Explicit
When Option Explicit On or Option Explicit appears in a file, you must explicitly declare all variables by using the Dim or ReDim statements. If you try to use an undeclared variable name, an error occurs at compile time. The Option Explicit Off statement allows implicit declaration of variables. This statement
reduces risk of error by mis-typing variable names.
Word.Application
Represents the Microsoft Word application. The Application object includes properties and methods that return top-level objects.
To use Automation to control Word from another application, use the Microsoft Visual Basic CreateObject or GetObject function to return a Word Application object.
Word.Document
Represents a Word document. The Document object is a member of the Documents collection. The Documents collection contains all the Document objects that are currently open in Word.
InsertAfter
Inserts the specified text at the end of a range or selection. After this method is applied, the range or selection expands to include the new text.
Kill
Deletes files from a disk.
Dir
The Microsoft Excel DIR function returns the first filename that matches the pathname and attributes specified. To retrieve additional filenames that match pathname and attributes, call DIR again with no arguments.
Early and Late Binding
An object is early bound when it is assigned to a variable declared to be of a specific object type. By contrast, an object is late bound when it is assigned to a variable declared to be of type Object. Objects of this type can hold references to any object, but lack many of the advantages of early-bound objects
Early binding: The first step in using early binding is to ensure that the compiler «knows» about the object to which you want to bind. If you are working with a Excel or Word, then the controls in the toolbox are all known, or intrinsic, objects, and you can create references to them without any concern.
Late Binding: With late binding, the code does not make an explicit reference to the type of object when the variable is declared. Instead, it will simply use the «Object» type.
Read and Append to a Microsoft Word Document
The following code illustrates the use of Excel VBA to read and appaend to a Microsoft Word Document.
This script will trad a document in your My Documents folder.
'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running. Option Explicit Sub CreateNewWordDoc() Dim wdApp As Word.Application Dim wdDoc As Word.Document Set wdApp = CreateObject("Word.Application") Dim myFile As String 'Alternatively, we can use Late Binding 'Dim wdApp As Object 'Dim wdDoc As Object 'Set wdApp = CreateObject("word.Application") myFile = Environ("UserProfile") & "/My Documents/" & "MyWordDoc.docx" Set wdDoc = wdApp.Documents.Open(myFile) wdApp.Visible = True With wdDoc .Content.InsertAfter "Hello World" .Content.InsertParagraphAfter End With End Sub