Ebenenweise kopieren
#12
Hallo Günther,

wenn unsere unterschiedlichen Versionen das Makro nicht anders interpretieren, sollte es egal sein ob Ebenen gesperrt sind oder nicht.

Es gibt eine Ausnahme: Die erste Ebene in der Zieldatei muss bearbeitbar sein.
Ich habe das Makro so geändert, dass es diese Ebene bearbeitbar schaltet.

Bevor Du das Makro startest, muss die Quelldatei ausgewählt sein (den Focus haben):

[Bild: mak501dlk7d.gif]

Das Makro schaltet die Bildaktualisierung ab. Dadurch sollte es etwas schneller laufen.

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, L2 As Layer, tempEbene As Layer
   Dim Suffix1 As String, Suffix2 As String
   Dim L2frei As Boolean: L2frei = True
   Dim L1S As Shape
   Dim L1Anz As Integer: L1Anz = 0
   Dim L2Anz As Integer: L2Anz = 0
   
   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
   
   For Each L In EbenenD1
       If Not L.IsSpecialLayer Then
           L1Anz = L2Anz + 1
       End If
   Next
   
   For Each L In EbenenD2
       If Not L.IsSpecialLayer Then
           If L2 Is Nothing Then Set L2 = L
           If Not L2.Editable Then
               L2frei = L2.Editable
               L2.Editable = True
           End If
           L2Anz = L2Anz + 1
       End If
   Next
   
   Application.Optimization = True
   
   Suffix1 = Chr(32) & Datei1.Name: Suffix1 = Left(Suffix1, Len(Suffix1) - 4)
   Suffix2 = Chr(32) & Datei2.Name: Suffix2 = Left(Suffix2, Len(Suffix2) - 4)
   
   If L1Anz = 1 Then
        Set tempEbene = EbenenD1.Parent.CreateLayer("tempEbene")
        tempEbene.CreateArtisticText 0, 0, "Temporäre Ebene: Bitte löschen"
    End If

   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 = L2.ImportEx(Datei1.FullFileName, cdrCDR, impOpt)
        impFlt.Finish
       .EndCommandGroup
   End With
   
   With Datei1
       .Undo
       .Save
   End With
   
   L2.Editable = L2frei
   
   If Not tempEbene Is Nothing Then
      EbenenD2(tempEbene.Name & Suffix1).Delete
      tempEbene.Delete
      Datei1.Save
   End If
   
   Datei2.Activate
   ActiveSelectionRange.Shapes.All.RemoveFromSelection
   Application.Optimization = False
   
   Application.Refresh
   
End Sub

Manchmal verursacht das Abschalten der Bildaktualisierung einen Absturz.
Sollte das bei Dir vorkommen musst Du diese Zeile herausnehmen:

Code:
Application.Optimization = True


Gruß

Koter
[-] 1 Benutzer bedankt sich bei koter für diesen Beitrag:
  • Karthagos
Zitieren



Nachrichten in diesem Thema
Ebenenweise kopieren - von Karthagos - 23.03.2022, 17:24
RE: Ebenenweise kopieren - von koter - 25.03.2022, 16:22
RE: Ebenenweise kopieren - von Karthagos - 25.03.2022, 17:48
RE: Ebenenweise kopieren - von koter - 25.03.2022, 22:59
RE: Ebenenweise kopieren - von Karthagos - 26.03.2022, 10:05
RE: Ebenenweise kopieren - von koter - 26.03.2022, 12:50
RE: Ebenenweise kopieren - von Karthagos - 26.03.2022, 13:33
RE: Ebenenweise kopieren - von Karthagos - 26.03.2022, 16:32
RE: Ebenenweise kopieren - von koter - 26.03.2022, 19:47
RE: Ebenenweise kopieren - von Karthagos - 26.03.2022, 21:01
RE: Ebenenweise kopieren - von Karthagos - 27.03.2022, 10:16
RE: Ebenenweise kopieren - von koter - 27.03.2022, 11:50
RE: Ebenenweise kopieren - von Karthagos - 28.03.2022, 21:52
RE: Ebenenweise kopieren - von koter - 29.03.2022, 20:31
RE: Ebenenweise kopieren - von Karthagos - 29.03.2022, 21:49

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