CorelDraw für Schilder, Etiketten zu Lasern verwenden - Möglichkeiten....
#6
Hallo Drommer,

Drommer schrieb:1. Falls die vorgegebene Seite voll beschriftet wurde aber laut Excel noch Daten vorhanden sind, automatisch die nächste Seite anbricht. Da es öffters vorkommt, das eine Seite aufgrund der Datenmenge nicht ausreicht.

Der folgende Code erstellt ein neues Dokument mit den nötigen Seiten.
Das Ausgangsdokument wird nicht verändert.
Die Ebene mit den Ronden muss im Ausgangsdokument den Namen „Ronden“ tragen.

Drommer schrieb:3. Komischerweise springe ich mit der TAB Taste tatsächlich von Textfeld zu Textfeld, allerdings von unten beginnend – warum nicht von der ersten Ronde? Gibt es da auch ne Einstellung in Corel? Zudem komme ich zwar indas Textfeld, jedoch kann ich nicht sofort überschreiben etc. gibt es dazu auch etwas?

Die Reihenfolge der Texte sollte jetzt so sein, wie Du es wünscht.
Sofort überschreiben kann ja nicht gehen. Die TAB-Taste hat ja beim Auswahlwerkzeug eine andere Funktion als beim Textwerkzeug. Beim Auswahlwerkzeug wird zum nächsten Objekt gesprungen, beim Textwerkzeug wird ein Tabulator eingefügt.

Du kannst aber die F8-Taste drücken, wenn das richtige Objekt ausgewählt ist, und dann den Text ändern. Ist die Änderung abgeschlossen kannst Du mit Strg-Leertaste zurück zum Auswahlwerkzeug wechseln.

Drommer schrieb:Allgemein stört die Bearbeitungszeit des Makro etwas, da gibt es aber keine Möglichkeit der Beschleunigung oder? Bei 500 Datensätzen, dauert das dann doch ne ganze Weile.

Ich habe versucht das Makro zu beschleunigen. Auf meiner alten Kiste braucht es für 500 Datensätze allerdings immer noch 14 bis 15 Sekunden.

Code:
Sub RondenBeschriftenXL()

    Dim xl As Object
    Dim wb As Object
    Dim Zellen As Object
    Dim xlr As Object
    
    Dim ND As Document, AD As Document
    Dim p As Page
    Dim Ronden As New ShapeRange
    Dim Rondentext As Shape, s As Shape
    Dim TextEbene As New Layer
    Dim RondenEbene As Layer
    Dim TN As TreeNode
    
    Dim Z As Integer, DSZ As Integer, i As Integer
    Dim t1 As Single, t2 As Single
    Dim yZugabe As Double
    
    yZugabe = 0
    
    t1 = Timer()
    
    Set xl = GetObject(, "Excel.Application")
    Set wb = xl.ActiveWorkbook
    Set Zellen = wb.ActiveSheet.Cells
    
    ActiveDocument.Unit = cdrMillimeter
    
    For Each s In ActiveLayer.Shapes.All
        If s.Name = "Ronde" Then
            Ronden.Add s
        End If
    Next
    
    Set xlr = wb.ActiveSheet.Range("A:A")
    DSZ = xl.WorksheetFunction.CountA(xlr)
    
    Ronden.Sort " @shape1.Top * 100 - @shape1.Left > @shape2.Top * 100 - @shape2.Left"
    
    Set AD = ActiveDocument
    Set ND = Ronden.CreateDocumentFrom
    ND.Name = Replace(Replace("Ronden-" & Date, ".", "-") & "-" & Time, ":", "-")
    ND.Unit = cdrMillimeter
    
    Set TextEbene = ND.ActivePage.CreateLayer("TextEbene")
    
    CorelScriptTools.BeginWaitCursor
    Application.Optimization = True

    Z = 1
    For i = 1 To DSZ
        Set Rondentext = TextEbene.CreateArtisticText(0, 0, Replace(Zellen(i, 1), "#", vbCrLf))
        With Rondentext
            .Text.Story.Size = 12
            .Text.Story.Alignment = cdrCenterAlignment
            .CenterX = Ronden(Z).CenterX
            .CenterY = Ronden(Z).CenterY - yZugabe
            .OrderToBack
        End With
        If Z < Ronden.Shapes.Count Then
            Z = Z + 1
        Else
            Z = 1
            Set p = ND.AddPages(1)
            p.Activate
            Set RondenEbene = p.Layers("Ronden")
            Set TextEbene = p.Layers("TextEbene")
            Set Ronden = ND.Pages(1).Layers("Ronden").Shapes.All.CopyToLayer(p.Layers("Ronden"))
        End If
    Next i
    
    If Z < Ronden.Count Then
        For i = Z To Ronden.Count
            Ronden(i).Delete
        Next i
    End If
    
    ActiveSelection.Shapes.All.RemoveFromSelection
    Application.Optimization = False
    ActiveWindow.Refresh
      
    t2 = Timer
    CorelScriptTools.EndWaitCursor
    AD.Activate
    MsgBox "fertig!" & vbCrLf & t2 - t1 & " Sekunden"
    
End Sub

Gruß

Koter
Zitieren



Nachrichten in diesem Thema
CorelDraw für Schilder, Etiketten zu Lasern verwenden - Möglichkeiten.... - von koter - 28.05.2017, 00:13

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  CorelDraw SE druckt nicht / Etikettenproblem Telly 3 413 18.09.2024, 17:03
Letzter Beitrag: Telly
  CorelDRAW X5 Vorlagendruck Glotzkowsky 19 2.351 28.06.2024, 08:48
Letzter Beitrag: Glotzkowsky
  CorelDraw 2021 und neuere Special Edition für PDF/X und AI asterix 11 1.370 16.06.2024, 12:54
Letzter Beitrag: asterix
  Zoom-Stufen in CorelDraw asterix 12 1.199 07.06.2024, 17:45
Letzter Beitrag: asterix
  CorelDraw von 2021 auf 2019 installieren TheRaver 0 543 19.05.2024, 09:06
Letzter Beitrag: TheRaver
  CorelDraw 2023 kein Plotten möglich purban 2 954 07.02.2024, 10:14
Letzter Beitrag: purban
  Bonus-Anwendungen von CorelDraw Graphics Suite SE 2021? Atomi 2 954 04.12.2023, 18:32
Letzter Beitrag: Atomi
  CorelDRAW 2019 keine Druckereinstellungen möglich HDT 2 890 17.11.2023, 13:43
Letzter Beitrag: HDT
  CorelDraw Home/Student 18 edwall47 2 762 05.11.2023, 20:37
Letzter Beitrag: koter
  CorelDRAW Home & Student X8 geht nicht mehr HDT 3 999 10.10.2023, 18:08
Letzter Beitrag: HDT