объединить текстовые документы - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь вставить / объединить 6 документов (в папке) в новые документы, содержащие все эти документы. Предполагается, что код VBA запускается из шаблона Excel, в котором созданы все документы, а затем предполагается, что они будут объединены с помощью макросов.

Однако я получаю

Ошибка выполнения 438: объект не поддерживает это свойство или метод

каждый раз, когда я пытаюсь запустить строку InsertFile. Я предполагаю, что проблема заключается в переходе с Excel на Word VBA (?)

Есть идеи или мысли?

  Sub MergeALL()
       Dim objWord
       Dim objDoc
       Set objWord = CreateObject("Word.Application")
       Set objDoc = objWord.Documents.Add
       objWord.Visible = True

'opens a new word document
Documents.Add
Dir "\\rz_sixt\user\Home\Pictures" 'change to OutputFilePath ?
MyName = Dir("*.docx")
While MyName <> ""
 With Selection
 .InsertFile Filename:=MyName, ConfirmConversions:=False, Link:=False, Attachment:=False
 .InsertParagraphAfter
 .InsertBreak Type:=wdSectionBreakNextPage
 .Collapse Direction:=wdCollapseEnd
 End With
 MyName = Dir()
Wend
End Sub

1 Ответ

0 голосов
/ 18 марта 2019

Когда вы просматриваете все найденные документы по Dir,
вам нужно снова добавить путь к файлу, когда вы InsertFile каждый файл:

Sub MergeALL()
    Dim objWord As Object
    Dim objDoc As Object
    Dim myPath As String, myFile As String

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    Set objDoc = objWord.Documents.Add
    myPath = "\\rz_sixt\user\Home\Pictures\"
    myFile = Dir(myPath & "*.docx", vbNormal + vbReadOnly + vbHidden)
    While myFile <> ""
        With objDoc.Bookmarks("\StartOfDoc").Range
            .InsertFile Filename:=myPath & myFile, _
                ConfirmConversions:=False, Link:=False, Attachment:=False
            .InsertBreak Type:=2    ' wdSectionBreakNextPage = 2
        End With
        myFile = Dir()
    Wend
    objDoc.Characters(1).Delete
End Sub

Если вы добавите ссылку на «Библиотеку объектов Microsoft Word x.x» для раннего связывания, вы можете использовать значения ENUM, такие как wdCollapseEnd, в противном случае используйте их соответствующие значения.

...