Добрый день, взял с этого форума макрос, создающий из таблицы экселя и шаблона несколько файлов ворд. Можно ли их в один объединить другим макросом или в этом исправить так, чтобы они писались в один файл сразу
Цитата: 000vanya000 от 22.03.2023, 10:23:18или в этом исправить так, чтобы они писались в один файл сразу
для этого надо плотно общаться на предмет понимания, что и как Вы хотите размещать, где будет храниться файл с общими данными и все в этом духе.
Ну а чтобы собрать в один из нескольких - я уже выкладывал на этом форуме код в этой теме: Макрос-собрать в 1 файл 100 файлов из 1-й папки: сначала 1.docx потом 2.docx
(https://www.excel-vba.ru/forum/index.php?topic=4720.0)
На выход у меня подаются файлы с названиями численными, 1.doc и тд, по возрастанию, но возможны пропуски (1,2,3,7,8,12) может быть и такое.
В итоговых файлах у меня таблицы одинакового формата, но с разными значениями и заголовками. Собственно хотел объединять все это дело в один файл с кучей таблиц.
Допустим есть папка на компе, в которой есть таблица Эксель с макросом. Он создает папку temp с кучей маленьких доков. Финальный док со всеми таблицами пусть будет создаваться начальной папке с файлом эксель. А папку temp вообще можно удалять тогда
Основное, что не могу понять, как это сделать именно через excel Vba. Без открытия ворда
По ссылке готовый код. Да, он для Word. Но если потратить чуточку времени на изучение вопроса - то перенести его непосредственно в Excel не составит труда.
Здесь расписано как это сделать: Как из Excel обратиться к другому приложению (https://www.excel-vba.ru/chto-umeet-excel/kak-iz-excel-obratitsya-k-drugomu-prilozheniyu/)
Но есть подозрение, что Вы об этом знаете, т.к. пытались именно к этой статье оставить комментарий(т.к. он к ней отношения не имеет - он не был опубликован).
Исходя из этого
Цитата: 000vanya000 от 22.03.2023, 17:45:15Финальный док со всеми таблицами пусть будет создаваться начальной папке с файлом эксель
ниже приведен код:
Sub MergeFiles()
Dim avFiles, lr As Long
Dim objWrdApp As Object, docAct As Object, docNow As Object
On Error Resume Next
Set objWrdApp = GetObject(, "Word.Application")
If objWrdApp Is Nothing Then
Set objWrdApp = CreateObject("Word.Application")
End If
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "*.doc*"
.AllowMultiSelect = True
If .Show = False Then Exit Sub
Set docAct = objWrdApp.Documents.Add
For lr = 1 To .SelectedItems.Count
Set docNow = objWrdApp.Documents.Open(.SelectedItems(lr))
docNow.Range.Copy
docAct.Range(docAct.Range.End - 1).Paste
docAct.Range(docAct.Range.End - 1).InsertBreak Type:=0
docNow.Close 0
Next lr
End With
objWrdApp.Visible = True
End Sub
запускаете код, выбираете файлы Word и все. После работы кода будет создан новый файл, в который будут перенесены все данные выбранных файлов.