Если есть необходимость обратиться к данным, хранящимся в текстовом файле приложения Word, или наоборот, передать данные из Excel в такой файл, то возникнет необходимость запуска приложения, в формате которого сохранен файл. Ниже приведен программный код макроса VBA для Microsoft Excel, запускающий приложение Word.
Если для передачи данных из Excel в Word необходим новый документ, можно воспользоваться примером кода, приведенного ниже. Макрос проверяет запущен ли Word и если он запущен, то добавляет новый документ, если же не запущен, то сначала запускает Word, а затем добавляет новый документ.
Sub Zapusk_Word_iz_Excel_01()
Dim objWrdApp As Object
Dim objWrdDoc As Object
On Error Resume Next
Set objWrdApp = GetObject(, "Word.Application")
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application")
Set objWrdDoc = objWrdApp.Documents.Add
objWrdApp.Visible = True
End If
Set objWrdDoc = objWrdApp.Documents.Add
Set objWrdDoc = Nothing
Set objWrdApp = Nothing
End Sub
Для того, чтобы перенести этот программный код на свой компьютер, наведите курсор мыши на поле с программным кодом, нажмите на одну из двух кнопкок в правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса).
Макрос, запускающий Word из Excel и открывающий существующий документ
Если для передачи данных из Word в Excel, необходимо открыть файл с заданным именем, то можно использовать аналогичный код, в котором вместо добавления нового документа открывается документ существующий:
Sub Zapusk_Word_iz_Excel_02()
Dim objWrdApp As Object
Dim objWrdDoc As Object
On Error Resume Next
Set objWrdApp = GetObject(, "Word.Application")
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application")
Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
objWrdApp.Visible = True
End If
Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
Set objWrdDoc = Nothing
Set objWrdApp = Nothing
End Sub
При копировании этого кода на свой компьютер, не забудьте изменить путь к файлу и его имя. Запуск приложения можно сделать невидимым, если в коде изменить True на False.
Макрос для передачи данных из Excel в Word
Ниже приведен программный код макроса, копирующий в активной рабочей книге Excel диапазон с данными A1:E2 и вставляющий его в открытый документ Word. После передачи данных из Excel в Word производится закрытие документа с сохранением изменений и выход из приложения.
Sub Peredacha_Dannyh_iz_Excel_v_Word()
Dim objWrdApp As Object
Dim objWrdDoc As Object
On Error Resume Next
Set objWrdApp = GetObject(, "Word.Application")
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application")
Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
objWrdApp.Visible = False
End If
Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
Range("A1:E2").Copy
objWrdDoc.Range(0).Paste
objWrdDoc.Close True
'True - с сохранением, False - без сохранения
objWrdApp.Quit
Set objWrdDoc = Nothing
Set objWrdApp = Nothing
End Sub
Другие материалы по теме:
|
Float |
|
|
1 |
|
|
09.03.2007, 12:22. Показов 26203. Ответов 6
Как из Excel открыть документ Word, в котором был бы определенный текст |
|
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||||||
|
09.03.2007, 21:27 |
2 |
|||||||
|
Решение1) Для того, чтобы создать новый документ Word, напечатать там что-нибудь, сохранить его и закрыть
2) Чтобы открыть уже существующий документ, распечатать его и закрыть
0 |
|
Float |
|
|
10.03.2007, 22:13 |
3 |
|
Спасибо |
|
Float |
|
|
15.03.2007, 19:58 |
4 |
|
Уже совсем наглость — как выдать текст с новой строки? |
|
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||
|
15.03.2007, 23:30 |
5 |
|||
|
Точно не знаю, попробуй
0 |
|
0 / 0 / 0 Регистрация: 10.07.2014 Сообщений: 41 |
|
|
07.11.2016, 19:32 |
6 |
|
А если путь к файлу документа будет меняться?
0 |
|
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
|
07.11.2016, 20:20 |
7 |
|||
|
CrazyTonik, путь книги с макросом это thisworkbook.Path
0 |
Создание нового документа 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.
|
Здравствуйте, подскажите пожалуйста, какой код VBA нужно написать, чтобы с кнопки ActiveX на листе Excel открывался Word файл. Файл лежит в одной папке с Excel. НО планируется распространить данный файл всем коллегам , поэтому , нужен относительный путь к файлу (то есть путь к файлу будет у каждого человека свой ) ? Изменено: Владислав Макеев — 08.09.2022 00:41:14 |
|
|
New Пользователь Сообщений: 4582 |
#2 08.09.2022 00:56:26
Изменено: New — 08.09.2022 00:58:02 |
||
|
Владислав Макеев Пользователь Сообщений: 8 |
#3 09.09.2022 16:23:42
Спасибо огромное ,за такой быстрый ответ!!!Код заработал!!! Но если не сложно сможете подсказать, excel открывает у меня файл, но в свернутом виде , как доработать код так , чтобы он всегда открывался в развернутом виде? |
||||
|
New Пользователь Сообщений: 4582 |
#4 09.09.2022 16:35:19 пожалуйста, не нажимайте кнопку Цитировать, я помню, что я писал вам. Нажимайте кнопку «Имя»
Изменено: New — 10.09.2022 01:14:22 |
||
|
Тимофеев Пользователь Сообщений: 1497 |
#5 09.09.2022 16:48:57
|
||
|
Тимофеев, спасибо за Ваш вариант он мне подошёл, я активировал строчку кода myWord.Active и теперь файл открывается при запуске кнопки! Но вот небольшой вопрос , а если я положу Word файл в отдельную папку, он мне выдаст ошибку , как это поправить? Изменено: Владислав Макеев — 10.09.2022 00:35:58 |
|
|
добавить в макрос диалог выбора файла |
|
|
New Пользователь Сообщений: 4582 |
#8 10.09.2022 01:20:06
Изменено: New — 10.09.2022 01:22:02 |
||
|
Александр Моторин, New, Извините что вел вас в заблуждение , но по моему я некорректно выразился. Под словом отдельная папка я имел ввиду , то что файл excel и файл word лежат в одной папке.И для того чтобы вордовский файл не мешался ,я для него создал отдельную папку там же , по сути файлы находятся рядом. Пример, путь к файлу excel: C:Рабочий столРасчётыРасчёты закупок.xlsx , а путь к вордовскому файлу C:Рабочий столРасчётыПрайсыАктуальный прайс.docx. Изменено: Владислав Макеев — 10.09.2022 03:03:55 |
|
|
New Пользователь Сообщений: 4582 |
#10 10.09.2022 03:06:57 чувствую эта тема будет бесконечной…
|
||
|
New, Тимофеев. Искренне благодарю за плодотворную, качественную работу, выполненную в короткий срок на высоком профессиональном уровне. Это позволило достичь эффективных результатов. Спасибо за проявленные старания, ответственность, добросовестность, трудолюбие, за удачно примененные глубокие знания и огромный практический опыт. Надеюсь на еще более успешную работу в дальнейшем. Изменено: Владислав Макеев — 11.09.2022 16:40:23 |
|
|
RAN Пользователь Сообщений: 7091 |
#12 11.09.2022 19:46:46
|
||
Задача заключается вот в чем.
Есть два файла Excel и Word в одной папке. В файле ворда есть шаблон текста с ссылка из ячеек Excel-а.Файл Excel-а открыт а ворд закрыт, в ячейках есть данные которые отражаются в документе ворд. После того как будут изменены данные, надо с помощью кнопки из документа Excel открыть документ ворд и напечатать страницы введенные в макрос кнопки, после чего документ ворд снова закроется.
Как из Excel с помощью макроса открыть файл Word-а и задать параметры для печати.
Открыть так:
Sub Открыть_документ_Word()
'
' Открыть_документ_Word Макрос
' Открыть документ Word из Excel
'
' Сочетание клавиш: Ctrl+d
'
Dim WD
Set WD = CreateObject("Word.Application")
WD.Visible = True
WD.Documents.Open Filename:=Application.ThisWorkbook.Path & "1.doc"
End Sub
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Как из Excel с помощью макроса открыть файл Word

Сообщение было отмечено Памирыч как решение