Excel это не сложно

Основные форумы => Вопросы по Excel и VBA => Тема начата: 000vanya000 от 22.03.2023, 10:23:18



Название: Совместить несколько файлов word через Vba excel
Отправлено: 000vanya000 от 22.03.2023, 10:23:18
Добрый день, взял с этого форума макрос, создающий из таблицы экселя и шаблона несколько файлов ворд. Можно ли их в один объединить другим макросом или в этом исправить так, чтобы они писались в один файл сразу


Название: Re:Совместить несколько файлов word через Vba excel
Отправлено: Дмитрий Щербаков(The_Prist) от 22.03.2023, 10:41:25
или в этом исправить так, чтобы они писались в один файл сразу
для этого надо плотно общаться на предмет понимания, что и как Вы хотите размещать, где будет храниться файл с общими данными и все в этом духе.
Ну а чтобы собрать в один из нескольких - я уже выкладывал на этом форуме код в этой теме: Макрос-собрать в 1 файл 100 файлов из 1-й папки: сначала 1.docx потом 2.docx
 (https://www.excel-vba.ru/forum/index.php?topic=4720.0)


Название: Re:Совместить несколько файлов word через Vba excel
Отправлено: 000vanya000 от 22.03.2023, 17:45:15
На выход у меня подаются файлы с названиями численными, 1.doc и тд, по возрастанию, но возможны пропуски (1,2,3,7,8,12) может быть и такое.
В итоговых файлах у меня таблицы одинакового формата, но с разными значениями и заголовками. Собственно хотел объединять все это дело в один файл с кучей таблиц.
Допустим есть папка на компе, в которой есть таблица Эксель с макросом. Он создает папку temp с кучей маленьких доков. Финальный док со всеми таблицами пусть будет создаваться начальной папке с файлом эксель. А папку temp вообще можно удалять тогда
Основное, что не могу понять, как это сделать именно через excel Vba. Без открытия ворда


Название: Re:Совместить несколько файлов word через Vba excel
Отправлено: Дмитрий Щербаков(The_Prist) от 23.03.2023, 08:18:01
По ссылке готовый код. Да, он для Word. Но если потратить чуточку времени на изучение вопроса - то перенести его непосредственно в Excel не составит труда.
Здесь расписано как это сделать: Как из Excel обратиться к другому приложению (https://www.excel-vba.ru/chto-umeet-excel/kak-iz-excel-obratitsya-k-drugomu-prilozheniyu/)
Но есть подозрение, что Вы об этом знаете, т.к. пытались именно к этой статье оставить комментарий(т.к. он к ней отношения не имеет - он не был опубликован).
Исходя из этого
Финальный док со всеми таблицами пусть будет создаваться начальной папке с файлом эксель
ниже приведен код:
Код: (vb)
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 и все. После работы кода будет создан новый файл, в который будут перенесены все данные выбранных файлов.