Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Word-Dateien zusammenfügen (Excel-Liste

Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 10:11:01
Ulli
Hallo Zusammen,
Ich habe folgende Frage und bin da leider noch nicht weiter.
Mit der Beispieldatei kann ich mit dem Makro "PräsentationenZusammenfügen" .ppt- Dateien zusammenfügen.
d.h. alle .ppt Dateien (Name), die in Spalte B ab Zeile 5 aufgeführt sind, werden in der Reihenfolge zusammengeführt. (die Dateien befinden sich im gleichen Ordner oder Unterordner)
Nun meine Frage:
Ist es möglich das Makro so zu ändern, so dass ich damit Word Dateien zusammenfüge kann?
Das heißt die in Spalte B aufgelisteten Word Dateien zu einer zusammenzufügen?
(Vielleicht die gesamten Inhalte in eine Datei kopieren? Seitenwechsel sollten bleiben.)
Vielen Dank für Eure Unterstützung
Gruß Ulli
https://www.herber.de/bbs/user/150125.xlsm

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 13:06:56
JoWE
Hallo Ulli,
muss es zwingend mit Deinem Makro und noch dazu in Excel geschehen?
Wo doch das Ziel eine große Word-Datei ist?
Hier sollte doch ein WORD-Makro in einer leeren Word-Datei die Aufgabe erledigen können.

Sub docs_zusammenführen()
'leeres Dokument sollte das aktive Dokument sein!!
Documents.Add
ChDir "C:\DeinVerzeichnis" 'hier liegen die Einzeldokumente die in der Schleife angearbeitet werden
FName = Dir("*.DOCX")
While FName  ""
With Selection
.InsertFile FileName:=FName, ConfirmConversions:=False
.InsertParagraphAfter
.InsertBreak Type:=wdSectionBreakNextPage
.Collapse Direction:=wdCollapseEnd
End With
FName = Dir()
Wend
End Sub
das Makro, sofern unbedingt gewollt, in ein Excel_Makro umzubauen sollte nicht wirklich allzu schwierig sein
Gruß
Jochen
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 13:33:35
Ulli
Hallo Jochen,
vielen Dank für deinen Vorschlag.
Ja, es sollte schon aus einer Excel Datei heraus gestartet werden.
Ich habe sehr viele kleine Worddateien in dem Verzeichnis.
Diese werden automatisch in der Excelliste in Spalte C aufgeführt, die Dateien, die ich davon auswähle und welche ich dann zusammensetzen möchte, werden dann in der Spalte B notiert. Bis dahin läuft alles.
Nur das Zusammensetzen aus dem Excel sheet heraus ist dann die Herausforderung.
Wäre schon klasse wenn man es aus der Exceldatei heraus realisiert bekommen würde.
(meine VBA Kenntnisse reichen leider lange nicht, habe schon vieles vergebens versucht)
Viele Grüße Ulli
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 16:16:44
JoWE
Ulli,
dann versuch dieses Makro. Es setzt auf den Entwurf Deiner Tabelle ("Liste") auf.
Es prüft vorab ob ein Text in Spalte 2 und in Spalte 5 steht und geht die Liste bis zur ersten leeren Zelle >5 in Spalte 2 durch
Du musst Pfadnamen und Dateinamen anpassen.

Sub docs_zusammenführen()
Dim wdApp As Object
Dim wdDoc As Object
Dim fPath As String
Dim sourcePath As String
Dim fName As String
Dim zeile As Long
zeile = 5
fPath = "C:\Zielordner\DocSammler" 'Anpassen
fName = "MainDoc.docx" 'Anpassen
sourcePath = "C:\Quellordner" 'Anpassen, der Ordner der Docs
'Word-Applikation starten
Set wdApp = CreateObject("Word.Application")
'das Zieldokument öffnen
Set wdDoc = wdApp.Documents.Open(fPath & "\" & fName)
With wdApp
.Visible = True
.Activate
End With
With wdApp.Selection
.endkey Unit:=6 'wdStory
.TypeParagraph
.InsertBreak Type:=2 'wdSectionBreakNextPage
End With
While Sheets("Liste").Cells(zeile, 2)  "" And _
Sheets("Liste").Cells(zeile, 4)  ""
With wdApp.Selection
.endkey Unit:=6 'wsStory
.InsertFile Filename:=sourcePath & "\" & _
Sheets("Liste").Cells(zeile, 2), _
ConfirmConversions:=False
.InsertParagraphAfter
.InsertBreak Type:=2 'wdSectionBreakNextPage
.Collapse Direction:=0 'wdCollapseEnd
End With
zeile = zeile + 1
Wend
'wdDoc Close:=savechanges = True ' wenn das Doc geschlossen weren soll
'wdApp.qouit ' wenn Word beendet werden soll
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
Gruß
Jochen
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 17:44:12
Ulli
Hallo Jochen,
vielen Dank für deinen Vorschlag.
Das sieht schon mal gut aus, das Makro läuft durch und die MainDoc.docx wird geöffnet, aber es sind keine weiteren Daten aus den Dateien in Spalte B ergänzt.
Ich habe in Spalte B probeweise 3 Dateinamen (ohne Dateiendung) eingetragen, die befinden sich auch im deklarierten Ordner, aber die Inhalte werden nach Start des Makro nicht übernommen.
Warum sucht das Makro auch in Spalte 4)
While Sheets("Liste").Cells(zeile, 2) "" And _
Sheets("Liste").Cells(zeile, 4) ""
Die Dateien die zusammengefügt werden sollen stehen in Spalte 2 (B)
In Spalte C stehen alle Dateien, in Spalte B halt nur die von mir selektierten, die zusammen sollen.
Ich glaube der Weg ist schon mal der richtige.
Viel Grüße Ulli
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 19:14:56
JoWE
Dateinamen werden incl. ".docx" erwartet.
In Spalte 4 stehen in Deinem Entwurf entweder Ziffern oder eben nichts.
Das Makro fügt das Doc daher nur dann ein, wenn in Spalte 4 ein Eintrag vorhanden ist, weil ich annahm dass Du damit steuern wolltest, was tatsächlich eingefügt werden soll.
AW: Word-Dateien zusammenfügen (Excel-Liste
04.01.2022 20:50:30
Ulli
Hallo Jochen,
super, funktioniert. ganz ganz herzlichen Dank.
Noch eine kleine Frage.
mit folgendem Code (Ausschnitt) lese ich alle Dateinamen aus dem Verzeichnis in die Spalte C ein.
Er schreibt mir da nur den Dateinamen ohne Erweiterung.
Was müsste ich ändern das auch die Dateierweiterung mit notiert wird?
For lngColumn = 2 To 5
.NewSearch = True
.SearchLike = Switch(lngColumn = 2, wks.Range("J1"), lngColumn = 5, wks.Range("M1")) & "*"
lngFileCount = .Execute(Sort_by_Name, Sort_Order_Ascending)
For ialngIndex = 1 To lngFileCount
Call wks.Hyperlinks.Add(Anchor:=wks.Cells(ialngIndex + 5, lngColumn + 1), _
Address:=.Files(ialngIndex).Path, TextToDisplay:=Left$(.Files(ialngIndex).Filename, _
InStrRev(.Files(ialngIndex).Filename, ".") - 1))
wks.Cells(ialngIndex + 5, 1) = ialngIndex ' Nummerierung
wks.Cells(ialngIndex + 5, lngColumn + 3) = .Files(ialngIndex).LastModify ' Speicherdatum
Danke noch einmal für deine Hilfe
Viele Grüße Ulli
Anzeige
AW: Word-Dateien zusammenfügen (Excel-Liste
05.01.2022 10:14:50
JoWE
mach keine Klimmzüge, ändere einfach mein Makro:

InsertFile Filename:=sourcePath & "\" & _ Sheets("Liste").Cells(zeile, 2) & ".doc*", _ ConfirmConversions:=False
Mit & ".doc*" sollte das schon genügen.
Gruß
Jochen
AW: Word-Dateien zusammenfügen (Excel-Liste
05.01.2022 10:40:21
Ulli
Hallo Jochen,
super, funktioniert einwandfrei, nur (doc* ) mag er nicht.
Wenn ich docx eingebe funktioniert es, man muß es wohl eindeutig deklarieren.
Vielen Dank noch einmal für dein Hilfe! Top!
Gruß Ulli
AW: ja, das * war 'n Schreibfehler :-), sorry
05.01.2022 11:55:02
JoWE
ansonsten zeig mal das komplette Makro, welches den Dateinamen in die Spalte B schreibt.
Da ist eine Stelle in dem Code beginnend mit strRev, das würd' ich mir gern nochmal komplett anschauen.
Anzeige
AW: ja, das * war 'n Schreibfehler :-), sorry
05.01.2022 12:07:57
Ulli
Hallo Jochen,
hier der komplette Code, mit dem werden die ausgewählten Dateien in Spalte B geschrieben:
Option Explicit

Sub sbTest()
Dim lloRow As Long, lloNext As Long, liMax As Integer, larstrCity() As String, liIdx As Integer
ReDim larstrCity(1, 0)
With Sheets("Liste") 'ändern, wenn Original nicht Tabelle1 heißt
liMax = Application.WorksheetFunction.Max(.Range("D5:D" & .Cells(.Rows.Count, 4).End(xlUp).Row))
For lloNext = 1 To liMax
For lloRow = 5 To .Cells(.Rows.Count, 4).End(xlUp).Row
If .Range("D" & lloRow).Value = lloNext Then
larstrCity(0, UBound(larstrCity, 2)) = .Range("D" & lloRow).Value
larstrCity(1, UBound(larstrCity, 2)) = .Range("C" & lloRow).Value
ReDim Preserve larstrCity(1, UBound(larstrCity, 2) + 1)
End If
Next
Next
ReDim Preserve larstrCity(1, UBound(larstrCity, 2) - 1)
Sheets.Add after:=Sheets(Sheets.Count)
lloRow = 1
For liIdx = 0 To UBound(larstrCity, 2)
Range("A" & lloRow).Value = larstrCity(0, liIdx)
Range("B" & lloRow).Value = larstrCity(1, liIdx)
lloRow = lloRow + 1
Next
With ActiveSheet.Sort.SortFields
.Clear
.Add2 Key:=Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With ActiveSheet.Sort
.SetRange Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
lloNext = 5
For lloRow = 1 To Cells(Rows.Count, 2).End(xlUp).Row
.Range("B" & lloNext).Value = Range("B" & lloRow).Value
lloNext = lloNext + 1
Next
With Application
.DisplayAlerts = False
ActiveSheet.Delete
.DisplayAlerts = True
End With
End With
Worksheets("Liste").Activate
'Call PräsentationenZusammenfügen
End Sub

Anzeige
AW: ja, das * war 'n Schreibfehler :-), sorry
05.01.2022 12:25:53
JoWE
sorry, aber das hilft nicht wirklich weiter, weil dieses Makro sich die Daten auch wieder von woanders her holt.
Also lass es einfach so wie's jetzt klappt. Ansonsten frag doch denjenigen, der Dir das entsprechende Makro geschrieben hat :-)
Der muss doch wissen wo und wie die Fileextension abgeschnitten wird und wie das zu ändern ist.
Gruß
Jochen
AW: ja, das * war 'n Schreibfehler :-), sorry
05.01.2022 12:37:04
Ulli
Hallo Jochen,
das funktioniert so sehr gut. Kann so bleiben.
Vielen Dank noch einmal.
Gruß Ulli

24 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige