0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 55 |
|
1 |
|
11.08.2016, 22:07. Показов 14841. Ответов 16
Всем привет!Окажите содействие плиз: имеется папка с файлами .тхт необходим макрос который открывает все файлы из этой папки в Ворде(если возможно была признательна если можно было реализовать вывод диалогового окна выбора папки в котором сразу открывалась папка из которой нужно открыть файлы), затем нужно изменить на альбомную ориентацию , сделать 8 шрифт распечатать файл и сохранить в формате .doc .docx или .RTF тут не важно главное чтоб читался вордом и форматирование не слетало.Пробовала рекордером но получилось только изменение форматирования записать и печать. При сохранении он сохраняет одним и тем же именем т.е. в макрос записывается имя первого сохраняемого файла и все последующие пытается сохранить под тем же именем.такое реально реализовать ? Хелп ми))), около ста отчетов приходится лопатить вручную((((
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
12.08.2016, 10:18 |
2 |
|||||||
Попробуйте так (только тестировать, разумеется, нужно на нескольких файлах)
~ Тоже самое, но без сообщений
0 |
roneta90 0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 55 |
||||
14.08.2016, 16:44 [ТС] |
3 |
|||
Добавлено через 31 минуту
Миниатюры
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
14.08.2016, 16:55 |
4 |
|||
и правильно пишет, что не находит ибо должен быть слэш, но форум его автоматически убирает. приходится вводить два слэша, но стоит забыть об этом правиле и …
0 |
0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 55 |
|
16.08.2016, 21:17 [ТС] |
5 |
Не получается(( . Тоже самое. Может тогда оставим только чтобы менялся шрифт ориентация страницы и сохранение с именем исходного файла Миниатюры
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
16.08.2016, 21:47 |
6 |
Смотрите пример, где для чистоты эксперимента, необходимо выбрать папку «Test_for_Roneta90»
0 |
0 / 0 / 0 Регистрация: 11.08.2016 Сообщений: 55 |
|
28.08.2016, 17:20 [ТС] |
7 |
тоже самое)))Ладно , впринципе открою файлы с помощью cntrl+0 . тогда макрос прописать чтобы менял ориентацию шрифт и сохранял с текущим именем файла и в формате док или докх или ртф вообщем чтоб форматиование сохранялось
0 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
07.09.2016, 21:10 |
8 |
а этот код подойдет для екселя, а не для ворда?
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
07.09.2016, 21:41 |
9 |
Выбор папки и перебор .txt файлов можно использовать и в Excel
0 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
07.09.2016, 21:45 |
10 |
проблема в вышеперложенных вариантах в том, что открывается путь, но! нет возможности выбрать в ручном режиме подходящий файл по даному пути
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
07.09.2016, 21:50 |
11 |
Проблема в людях, которые пытаются использовать диалог выбора папки, для указания файла, хотя для последнего есть свои варианты.
0 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
07.09.2016, 21:57 |
12 |
какие варианты есть?
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
07.09.2016, 22:07 |
13 |
|||||||
Причём в справке есть готовый пример — для выбора .txt файла или
0 |
1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
|
07.09.2016, 22:13 |
14 |
спасибо, а можно чтобы автоматически при этом открывалась определенная папка?
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
07.09.2016, 22:30 |
15 |
|||
Для первого варианта ChDrive + ChDir, но если не прокатит, то во втором варианте есть свойство InitialFileName
0 |
Heroes 1 / 1 / 0 Регистрация: 12.06.2015 Сообщений: 93 |
||||
07.09.2016, 22:47 |
16 |
|||
у меня получилось так:
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
07.09.2016, 23:09 |
17 |
|||
Это прокатит только если в момент выполнения макроса текущим будет диск «C» и Вы не откажетесь от выбора файла. Т.е. более универсальным является следующий вариант (хотя и здесь, не помешало бы, проверить указанную папку на наличие)
0 |
Если есть необходимость обратиться к данным, хранящимся в текстовом файле приложения 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
Другие материалы по теме:
Создание нового документа 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.
Millions of small businesses all around the world use Microsoft Word and Excel daily to create correspondence or crunch numbers. If you are like many small business owners, there are probably plenty of times when you have both Excel and Word open at the same time. In fact, copying and pasting data from an Excel spreadsheet into a Word sales letter is a task many business users perform often. While minimizing Excel to open an existing document in Word — or to create a new one — is relatively quick and simple, using Visual Basic for Applications, or VBA, you can program macros or command buttons in Excel that make opening and working with Microsoft Word even faster and more productive.
Enable the Developer Tab
-
Launch Microsoft Excel on your computer. Click the “File” tab on the ribbon bar, then the “Options” link.
-
Click the “Customize Ribbon” link on the left side of the Excel Options window. Locate the “Developer” value in the right pane under the “Customize the Ribbon” header. Click the check box next to the “Developer” value label.
-
Click the “OK” button to save the option changes and return to the main Excel program window. After you return to the main Excel window, the Developer tab appears on the ribbon bar.
Opening an Existing Word Document from Excel
-
Click the “Developer” tab on the Excel ribbon bar. Click the “Insert” icon on the Developer tab. In the drop-down box, click and select the “Button” control in the Form Controls section.
-
Click the cell in the Excel spreadsheet where you want the command button control to appear. The Assign Macro window opens automatically.
-
Type “OpenWordFile” or something similar in the Macro Name field. Be sure not use spaces in the name or the macro won’t save properly. Click the “New Button” in the Assign Macro window. The Microsoft Visual Basic for Applications editor window opens and appears on the screen.
-
Highlight all of the text in the Book1 – Module1 (Code) window. Press the “Backspace” key to delete all of the text. Copy and paste the following code into the window:
Sub Open_Word_Document() ‘Open an existing 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 the document you want to open from Excel objWord.Documents.Open «C:Documentsmyfile.doc» End Sub
-
Change the “C:Documentsmyfile.doc” value to the complete file path of the existing Word document file you want to open with the command button in Excel. For instance, if the documents resides in the “C:My Document” folder and has the filename “sales letter.docx,” change the value to “C:My Documentssales letter.docx.”
-
Click the “Save” icon on the Visual Basic editor toolbar. A new Excel “Save As” window appears on the screen.
-
Enter a new file name for the workbook file in the “File Name” field, then click “Save.” Alternatively, leave the current file name in place, then click the “Save” button.
-
Click the “Command Button” in the Excel spreadsheet. Microsoft Word opens automatically and displays the file from the path you entered in the Visual Basic editor code window.
Create New Word Document from Excel
-
Launch Microsoft Excel and click the Developer tab.
-
Click the “Insert” icon on the Developer tab and select the Button control. Select the cell on your spreadsheet where you want to place the command button.
-
Create a new macro name called “NewWordDocument” or something similar. Click the “New” button in the Assign Macro window.
-
Copy and paste the following code into the Visual Basic editor window:
Sub NewWordDocument() Dim wrdApp As Word.Application Dim wrdDoc As Word.Document Dim i As Integer Set wrdApp = CreateObject(«Word.Application») wrdApp.Visible = True Set wrdDoc = wrdApp.Documents.Add ‘ or ‘Set wrdDoc = wrdApp.Documents.Open(«C:FoldernameFilename.doc») ‘ sample word operations With wrdDoc For i = 1 To 100 .Content.InsertAfter «Here is a sample test line #» & i .Content.InsertParagraphAfter Next i If Dir(«C:DocumentsMyNewWordDoc.doc») <> «» Then Kill «C:DocumentsMyNewWordDoc.doc» End If .SaveAs («C:DocumentsMyNewWordDoc.doc») .Close ‘ close the document End With wrdApp.Quit ‘ close the Word application Set wrdDoc = Nothing Set wrdApp = Nothing End Sub
-
Save the new macro code in the Visual Basic editor. Save the Excel workbook file when prompted to do so. Close the editor window to return to Excel.
-
Click the command button you created on the spreadsheet. Microsoft Word opens and displays a new blank document.
Здравствуйте, подскажите пожалуйста, какой код 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
|
||