Word VBA Макросы: Как скопировать содержимое файлов в новый документ?

Автор Посетитель, 18 сентября 2017, 19:55

Посетитель

Подскажите, как исправить макрос так, чтобы файлы копировались не в первый открытый документ, а в новый?

Макрос
Sub MergeDocuments()

    Dim doc As Document, MyPath As String, MyName As String
   
    Application.ScreenUpdating = False
    MyPath = "C:\Users\User\Desktop\Новая папка"
    MyName = Dir(MyPath & "\" & "*.doc*")
    Do While MyName <> ""
      If MyName <> ActiveDocument.Name Then
          Set doc = Documents.Open(MyPath & "\" & MyName)
          Selection.WholeStory
          Selection.Copy
          Windows(1).Activate
          Selection.EndKey Unit:=wdLine
          Selection.TypeParagraph
          Selection.Paste
          doc.Close False
      End If
      MyName = Dir
    Loop
    Application.ScreenUpdating = True

End Sub
[свернуть]

Администратор

Макрос
Sub MergeDocuments()

    Dim docSrc As Document, docRes As Document
    Dim MyPath As String, MyName As String
   
    Application.ScreenUpdating = False
   
    ' Создание пустого ворд-файла и присвоение ему имени "docRes".
        ' Затем в коде можно обращаться к этому файлу по этому имени.
    Set docRes = Documents.Add
   
    MyPath = "C:\Users\User\Desktop\Новая папка"
    MyName = Dir(MyPath & "\" & "*.doc*")
    Do While MyName <> ""
   
        Set docSrc = Documents.Open(MyPath & "\" & MyName)
        ' Копирование всего основного текста файла (без колонтитулов).
        docSrc.Range.Copy
        ' Вставка абзаца в конце файла.
        docRes.Range.InsertParagraphAfter
        ' Вставка содержимого буфера обмена в новый файл.
            ' docRes.Range(docRes.Range.End - 1, docRes.Range.End - 1) - это положение
            ' перед последним символом "знака абзаца".
        docRes.Range(docRes.Range.End - 1, docRes.Range.End - 1).Paste
        ' Закрытие файла-источника без сохранения.
        docSrc.Close SaveChanges:=False
       
        MyName = Dir
    Loop
    Application.ScreenUpdating = True
   
End Sub
[свернуть]

Посетитель

Большое спасибо!
Не думал, что могу так быстро получить все ответы!