2016-06-23 12 views
0

In EXCEL kombiniere ich ein paar Word-Dokumente mit VBA. Mein Arbeitsablauf ist:Word-Dokumente in VBA EXCEL zusammenführen (Ausgabe: umgekehrte Reihenfolge)

  1. Öffnen Sie eine Vorlage und entfernen Sie alle vorhandenen Text (nur die format_ halten
  2. durch Kopieren jedes Wort Dokument eine Schleife beginnen zu kombinieren (I wird von der Linie 13 von jeder Datei kopieren)
  3. einfügen in die zusammengefügte Datei

Bisher meisten Schritte sind gut, außer dass die zusammengefügte Datei ist in revers Ordnung, die eigentlich die letzte Seite des kombinierten Dokuments bedeutet, dass das erste geöffnete Dokument ist. gibt es eine Möglichkeit, Text in der normalen Reihenfolge einzufügen? Danke!

Set newDoc = objWord.Documents.Open(path to template) 
'clear template text in this template 
objWord.Selection.WholeStory 
objWord.Selection.Delete 

For i = 1 To NoOfFiles 
     Set objDoc = objWord.Documents.Open(Folderpath to output files) 
     ' goto line 13 
     Set r = objDoc.Goto(what:=3, which:=wdGoToNext, Count:=13) 
     r.End = objDoc.Range.End 
     r.Copy 
     newDoc.Content.InsertBreak Type:=wdSectionBreakNextPage 
     newDoc.Range(newDoc.Content.Start, newDoc.Content.Start).Paste 

    End If 
Next 
+0

Ihr Bereich, in den Sie einfügen, ist der Anfang des Dokuments (newDoc.Content.Start). Vielleicht versuchen Sie newDoc.Content.End? – leowyn

+0

@leowyn, Ich habe versucht 'newDoc.Range (newDoc.Content.End, newDoc.Content.Start) .Paste', aber habe' Wert außerhalb des Bereichs' Fehler –

+0

Die beiden Parameter, die an Range übergeben werden, sind die Anfangs- und End-Cursorpositionen. Wenn Sie 'newDoc.Range (newDoc.Content.End, newDoc.Content.Start) .Paste' verwenden, dann versuchen Sie, einen Bereich zu erstellen, der vom Ende des Dokuments bis zum Anfang zurückgeht. Versuchen Sie 'newDoc.Range (newDoc.Content.End, newDoc.Content.End) .Paste' – leowyn

Antwort

0

Dieses Skript wird alle Word-Dateien zu einem zusammenführen.

Sub MergeAllWordDocs1() 
    Dim i As Long 
    Dim MyName As String, MyPath As String 
    Application.ScreenUpdating = False 
    Documents.Add 
    MyPath = "C:\Users\your_path_here\" ' <= change this as necessary 
    MyName = Dir$(MyPath & "*.do*") ' not *.* if you just want doc files 
    Do While MyName <> "" 
     If InStr(MyName, "~") = 0 Then 
      Selection.InsertFile _ 
    FileName:="""" & MyPath & MyName & """", 
      ConfirmConversions:=False, Link:=False, 
      Attachment:=False 
    Selection.InsertBreak Type:=wdPageBreak 
    End If 
     MyName = Dir() ' gets the next doc file in the directory 
    Loop 
End Sub 
Verwandte Themen