ich habe zwei Dateien mit recht vielen, meist gleichlautenden Ebenen. Gibt es eine Möglichkeit, alle Ebenen auf einen Rutsch in die andere Datei zu kopieren, wobei die Ebenen erhalten bleiben.
Als Beispiel:
die Inhalte der Ebenen Städte, Länder und Flüsse sollen von Datei 1 in die entsprechenden Ebenen der Datei 2 und die Ebene Seen der Datei 1 nach Datei 2 kopiert werden, sodass nun in Datei 2 5 Ebenen vorhanden sind.
(23.03.2022, 17:24)Karthagos schrieb: ...Gibt es eine Möglichkeit, alle Ebenen auf einen Rutsch in die andere Datei zu kopieren, wobei die Ebenen erhalten bleiben...
danke für Deine Antwort, klappt prima. Die Inhalte der Ebenen werden nicht vermischt, sondern auch bei gleichen Namen also z.B. Städte dann zwei mal, also separat dargestellt. Das finde ich besonders gut.
Noch eine Nachfrage durch den neuen Wissensstand, kann man die Ebenennamen zur Unterscheidung vorher in einem Rutsch dateiweise umbenennen, also z.B. Städte in Datei 1 Städte, Datei 2 Städte?
Sub ImpDatei()
Dim impOpt As StructImportOptions
Dim impFlt As ImportFilter
Dim Dateien As Documents
Dim Datei1 As Document, Datei2 As Document, d As Document
Dim EbenenD1 As Layers, EbenenD2 As Layers
Dim L As Layer
Dim Suffix1 As String, Suffix2 As String
Set Datei1 = ActiveDocument
For Each d In Documents
If Not d = Datei1 Then Set Datei2 = d
Next
Set EbenenD1 = Datei1.Pages.First.Layers
Set EbenenD2 = Datei2.Pages.First.Layers
With Datei1
.BeginCommandGroup "Ebenen umbenennen"
For Each L In EbenenD1
L.Name = L.Name & Suffix1
Next
.EndCommandGroup
.Save
End With
Set impOpt = CreateStructImportOptions
With impOpt
.MaintainLayers = True
.Mode = cdrImportFull
End With
With Datei2
.BeginCommandGroup "Ebenen umbenennen"
For Each L In EbenenD2
L.Name = L.Name & Suffix2
Next
.EndCommandGroup
.Pages.First.Layers.Top.Activate
.BeginCommandGroup "Import"
Set impFlt = .ActiveLayer.ImportEx(Datei1.FullFileName, cdrCDR, impOpt)
impFlt.Finish
.EndCommandGroup
End With
With Datei1
.Undo
.Save
End With
Datei2.Activate
ActiveSelectionRange.Shapes.All.RemoveFromSelection
Application.Refresh
End Sub
Das Makro verarbeitet nur die jeweils erste Seite.
Wenn das Makro bei Dir funktioniert und Du mehrseitige Dokumente verarbeiten willst,
melde Dich noch einmal.
Gruß
Koter
1 Benutzer bedankt sich bei koter für diesen Beitrag:1 Benutzer bedankt Danke koter für diesen Beitrag • Karthagos
vielen Dank für das Makro, mehrseitige Dokumente werde ich auf diese Art sicherlich nicht bearbeiten.
Ich habe testweise die Datei Bali.cmx in Datei1.cdr und die Singap9.cmx in Datei2.cdr gespeichert. Dann die Datei1.cdr geöffnet, die Datei2.cdr importiert, dann werden die einzelnen Ebenen dateiweise untereinander angezeigt.
Jetzt das Makro ausgeführt, leider funktioniert es nicht, ich bekomme eine Fehlermeldung:
Habe mal die beiden kleinen cmx-Dateien (in .txt umbenannt) beigefügt, vielleicht kannst Du es nachvollziehen und den Fehler finden.
(26.03.2022, 10:05)Karthagos schrieb: ...Ich habe testweise die Datei Bali.cmx in Datei1.cdr und die Singap9.cmx in Datei2.cdr gespeichert. Dann die Datei1.cdr geöffnet, die Datei2.cdr importiert, dann werden die einzelnen Ebenen dateiweise untereinander angezeigt.
Das funktioniert mit Deinen Dateien bei mir leider nicht. Die Importfunktion von X7 macht Gruppen aus den Ebenen. Warum das so ist, weiß ich leider nicht. Vielleicht finde ich den Grund noch.
Um das Makro zu verwenden, müssen beide Dateien geöffnet sein. Das habe ich vergessen zu erwähnen.
ich muss noch mal nachfragen, das Makro funktioniert nur, wenn die Dateien mit Datei1 und 2 benannt sind.
Hatte es jetzt mit den Dateien Afrika.cdr und Europa.cdr versucht, da scheint es nicht zu klappen, irgendwie logisch.
Kannst Du das Makro so verändern, dass es einfach nur die beiden geöffneten Dateien verarbeitet, es würde wahrscheinlich genügen, wenn hinter der Ebenenbezeichnung z.B. eine 1 oder 2 steht, wenn das so geht.
(26.03.2022, 16:32)Karthagos schrieb: ich muss noch mal nachfragen, das Makro funktioniert nur, wenn die Dateien mit Datei1 und 2 benannt sind.
Hatte es jetzt mit den Dateien Afrika.cdr und Europa.cdr versucht, da scheint es nicht zu klappen, irgendwie logisch...
Logisch ist das leider nicht, weil das Makro die Dateinamen zur Benennung der Ebenen verwendet.
Bei meinen Testdateien klappt das auch:
Das Makro verwendet die Importfunktion von CorelDraw und ich weiß nicht, warum diese unterschiedliche Ergebnisse liefert, ob man sie nun per Menü oder per Makro aufruft.
Du schreibst, dass es nicht zu klappen scheint.
Kannst Du das genauer beschreiben?
(26.03.2022, 16:32)Karthagos schrieb: Kannst Du das Makro so verändern, dass es einfach nur die beiden geöffneten Dateien verarbeitet, es würde wahrscheinlich genügen, wenn hinter der Ebenenbezeichnung z.B. eine 1 oder 2 steht, wenn das so geht.
Genau so ist es schon programmiert. Nur dass als Ebenenbezeichnung der Dateiname benutzt wird.
Ich versuche der Sache mit der Importfunktion noch einmal nachzuspüren.
Leider weiß ich noch nicht, wann ich dazu komme.
bitte mach Dir wegen mir keinen Stress, ich bin Rentner, habe Zeit und Geduld
Ich habe das Makro jetzt noch mal mit den zwei Dateien Afrika und Europa getestet. Spielt es eine Rolle, ob Ebenen gesperrt und/oder ausgeblendet sind? Habe jetzt mal alle entsperrt und eingeblendet und es funktioniert. Allerdings dauert es bei diesen vielen Ebenen eine geraume Zeit, bis das Makro abgearbeitet ist.
Also entweder war ich beim letzten Versuch zu ungeduldig (die ersten beiden Testdateien waren ja sehr klein und mit wenigen Ebenen, da ist mir das nicht aufgefallen, weil es schnell ging) oder es liegt an der Behandlung von gesperrt/ausgeblendet, was ich eigentlich nicht glaube. Werde das noch mal testen und dann Rückmeldung geben, damit das hier im Beitrag auch für andere richtig gestellt ist.
Nochmal vielen vielen Dank und einen schönen Abend.