Ebenenweise kopieren
#1
Hallo,

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.

   
Zitieren
#2
Hallo Günther,

(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...

Ja, importiere Datei 1 in Datei 2.

Gruß

Koter
Zitieren
#3
Hallo Koter,

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?
Zitieren
#4
Hallo Günther,

Das könnte mit einem Makro gehen:

Code:
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
   
   Suffix1 = Chr(32) & Datei1.Name: Suffix1 = Left(Suffix1, Len(Suffix1) - 4)
   Suffix2 = Chr(32) & Datei2.Name: Suffix2 = Left(Suffix2, Len(Suffix2) - 4)
   
   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:
  • Karthagos
Zitieren
#5
Hallo Koter,

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.


Angehängte Dateien
.txt   BALI.txt (Größe: 71,13 KB / Downloads: 2)
.txt   SINGAP9.txt (Größe: 82,7 KB / Downloads: 2)
Zitieren
#6
Hallo Günther,

(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.

Gruß

Koter
Zitieren
#7
Hallo Koter,

jetzt funktioniert es perfekt. Mein Fehler war, ich hatte schon Datei 1 geöffnet, Datei 2 importiert und dann versucht das Makro auszuführen.

Vielen lieben Dank und ein schönes Wochenende
Zitieren
#8
Hallo Koter,

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.
Zitieren
#9
Hallo Günther,

(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:

[Bild: mak50b8kc8.gif]

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.

Gruß und ein schönes Wochenende

Koter
Zitieren
#10
Hallo Koter,

bitte mach Dir wegen mir keinen Stress, ich bin Rentner, habe Zeit und Geduld  Wink

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.
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Stil kopieren Boerni 9 351 21.10.2022, 16:48
Letzter Beitrag: Boerni
  Eigenschaften kopieren maine-coon 3 893 08.12.2019, 23:49
Letzter Beitrag: norre
  CorelCraw 2017 - Gedenksekunde beim kopieren T3P4 15 3.471 24.10.2019, 15:33
Letzter Beitrag: mtemp
  CD2018: Ebenen gruppiert kopieren? Roelli 5 1.110 31.10.2018, 02:33
Letzter Beitrag: norre
  X6 kopieren eines Rechteckes dauert 10 Sekunden!!! nick 5 1.758 21.06.2016, 16:52
Letzter Beitrag: Hartmut
  Kopieren HMittermayr 3 1.613 29.02.2016, 16:11
Letzter Beitrag: norre
  Beim Kopieren und Einfügen verschwinden Buchstaben Farbstich69 16 4.810 18.09.2015, 18:14
Letzter Beitrag: Farbstich69
  X6: Kopieren in die Zwischenablage: 1 Sekunde Dauer? mtemp 2 1.107 19.12.2014, 13:56
Letzter Beitrag: mtemp
  Kopieren mit der rechten Maustaste, X5 OsCor 16 3.684 22.09.2014, 21:51
Letzter Beitrag: fritzbuser
  Eigenschaften kopieren von ... Janny01 1 1.274 08.05.2014, 15:06
Letzter Beitrag: norre