Если есть необходимость обратиться к данным, хранящимся в текстовом файле приложения 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. Показов 26207. Ответов 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.
This Microsoft Excel macro will open a Microsoft Word document from excel. With this macro, you can open any word document on your computer. This is a small but cool macro; you can attach it to a button or checkbox and then, whenever a user clicks the button or checkbox, have a specified Microsoft word document open.
You can change the word document that will open by changing this line of code objWord.Documents.Open «C:test.doc» so that the directory and file name, including extension, point to the desired file on your computer.
Where to install the macro: Module
Open a Word Document from Excel
Sub Open_Word_Document()
'Opens a Word Document from Excel
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Change the directory path and file name to the location
'of your document
objWord.Documents.Open "C:test.doc"
End Sub
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Similar Content on TeachExcel
Open a PowerPoint Presentation from Excel
Macro: This free macro for Microsoft Excel allows you to open any PowerPoint presentation fro…
Send Emails through Outlook using Email Addresses from Excel and text from Word
Macro: Send Emails from Excel Course
This macro allows you to send an email to a list of recipien…
Delete a VBA Module From Excel
Macro: Delete a VBA macro module from Excel with this macro. This macro allows you to fully …
Open PDF from Excel
Tutorial:
How to open a PDF file from a clickable button, link, or image in Excel. This allows yo…
Open Microsoft Word from Excel
Macro: This free macro will open the Microsoft Word program on your computer. You do need to have…
Remove Personal Information from Excel Files
Tutorial:
How to remove all personally identifiable information from an Excel file.
When a file is…
How to Install the Macro
- Select and copy the text from within the grey box above.
- Open the Microsoft Excel file in which you would like the Macro to function.
- Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
Or For other ways to get there, Click Here. - On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
- If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
- If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
- Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
- You are now ready to run the macro.
Здравствуйте, подскажите пожалуйста, какой код 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
|
||