Seriendrucktexte automatisch skalieren
#1
Hallo zusammen

Gibt es die Möglichkeit mit Corel X6, dass ich Seriendrucktexte die eine definierte breite überschreite automatisch skalieren kann.
Zur Zeit machen wir das leider per Hand.

PS: VBA Kenntnisse hätte ich aber leider nur in Verbindung mit Excel
Zitieren
#2
Hallo Ben,

ich habe das mal probiert. Beim direkten Seriendruck ist es mir nicht gelungen. Es ging aber nachträglich mit einem zusammengeführten Dokument (Etiketten):

Das zu bearbeitende Seriendruckfeld habe ich im Objektmanager benannt, damit das Makro es identifizieren kann.

[Bild: zwischenablage01fqznd.jpg]

Auf einigen Etiketten war der Text zu lang:

[Bild: zwischenablage02miuyr.jpg]

ich habe dann dieses kleine Makro ausgeführt:

Code:
Sub KurztextVerkleinern()
    Dim Seite As Page
    Dim Kurztext As Shape
    ActiveDocument.Unit = cdrMillimeter
    ActiveDocument.ReferencePoint = cdrMiddleLeft
    For Each Seite In ActiveDocument.Pages
        Set Kurztext = Seite.Shapes("Kurztext")
        If Not Kurztext Is Nothing Then
            If Kurztext.SizeWidth > 70 Then
                Kurztext.Stretch 1 / Kurztext.SizeWidth * 70
            End If
        End If
    Next
End Sub

Das Beispiel-Makro verkleinert die Kurztexte, wenn sie breiter als 70mm sind:

[Bild: zwischenablage03rmj51.jpg]

Das hat bei allen Etiketten geklappt, allerdings hatte der längste Text nach der Verkleinerung nur noch knapp 7pt.

Gruß

Koter
Zitieren
#3
Hallo Koter,
ich habe mir dein Macro auch runtergeladen, funktioniert ja bestens.

Jetzt habe ich hier eine alte Datei wo ich das auf allen Grafiktext anwenden will, ich habe da die Nacht rumprobiert aber ich als Macrodummy habe natürlich nicht hinbekommen.
Gibt es da ne Möglichkeit dies auf allen Grafiktext anzuwenden, also unabhängig vom Namen im Objektmanager?
Zitieren
#4
Danke Koter für deinen Lösungsvorschlag hat super funktioniert
xmasdanke
Zitieren
#5
Hallo Norre,

norre schrieb:Gibt es da ne Möglichkeit dies auf allen Grafiktext anzuwenden, also unabhängig vom Namen im Objektmanager?

Du kannst es damit versuchen:

Code:
Sub GrafiktextVerkleinern()
    Dim Seite As Page
    Dim Grafiktext As ShapeRange
    Dim Text As Shape
    Dim Breite As Double
    Breite = 80
    ActiveDocument.Unit = cdrMillimeter
    ActiveDocument.ReferencePoint = cdrBottomLeft
    ActiveDocument.BeginCommandGroup "Text verkleinern"
    Optimization = True
    For Each Seite In ActiveDocument.Pages
        Set Grafiktext = Seite.Shapes.FindShapes(Query:="@type='text:artistic'")
        If Not Grafiktext Is Nothing Then
            For Each Text In Grafiktext
                If Text.SizeWidth > Breite Then
                    Text.Stretch 1 / Text.SizeWidth * Breite
                End If
            Next
        End If
    Next
    Optimization = False
    ActiveDocument.EndCommandGroup
    ActiveWindow.Refresh
End Sub

Eines will ich aber nicht verschweigen:
Bei einer Datei ist X6 komplett abgeschmiert. Es war komplett vom Bildschirm und aus dem Taskmanager verschwunden. Beim nächsten Test (mit der selben Datei) hat es wieder geklappt.
Woran es lag, weiß ich nicht.

Gruß

Koter
Zitieren
#6
Hallo Koter,

PERFEKT :daumen:
ist super durchgelaufen.....

Dankeschön :lol:

koter schrieb:Eines will ich aber nicht verschweigen:
Bei einer Datei ist X6 komplett abgeschmiert. Es war komplett vom Bildschirm und aus dem Taskmanager verschwunden.

Nachdem ich beim Ändern und Ausprobieren nach der Trial & Error Methode vorgehe, kann mich sowas nicht schocken MrGreen
Zitieren
#7
Hallo,
Funktioniert wunderbar, leider wird die Startposition des Textfeldes durch den zuerst größeren Text zu weit nach links verschoben. Gibt es eine Möglichkeit die Position neu berechnen zu lassen? Ähnlich einem REDRAW aus VisualBasic?
Zitieren
#8
Hallo Haegar,
willkommen im Forum!

Ich gehe davon aus, dass Du mit „Startposition“ die Position der linken unteren Ecke des Grafiktextes auf der X-Achse meinst.

Wie Du an den Screenshots siehst, hatte ich das Problem nicht. Ich weiß nicht, warum es bei Dir auftritt.
Du kannst versuchen, die X-Position in eine Variable zu schreiben und deren Wert dem skalierten Grafiktext zuzuweisen:
Code:
   If Text.SizeWidth > Breite Then
       X = Text.LeftX
       Text.Stretch 1 / Text.SizeWidth * Breite
       Text.LeftX = X
   End If

Gruß

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



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Fehlerhafte Knoten-Griffe automatisch finden asterix 47 5.144 23.06.2024, 12:56
Letzter Beitrag: asterix
Question QR-Codes automatisch generieren Lisa1992 1 265 31.05.2024, 07:02
Letzter Beitrag: Litschi
  Beim speichern Version automatisch auf alte Version stellen awitechnik 4 1.126 12.01.2024, 11:04
Letzter Beitrag: awitechnik
  Textwerkzeug automatisch gedreht Nils 3 1.610 28.09.2022, 12:22
Letzter Beitrag: cutti
  Raute Skalieren (größe Anpassen) Bonzai 5 1.389 29.01.2021, 14:13
Letzter Beitrag: Bonzai
  Einzelbereiche skalieren?? Fotojanson 2 1.035 13.10.2020, 10:10
Letzter Beitrag: norre
  Hilfe: Skalieren aber Gruppierungen Proportional beibehalten Olaf 10 2.656 14.09.2020, 07:32
Letzter Beitrag: Olaf
  Landscape vs portrait druckformat nicht mehr automatisch siegbrunn 2 1.424 10.09.2019, 17:36
Letzter Beitrag: siegbrunn
  Hilfslinien automatisch verschieben bei Formatwechsel OsCor 6 2.563 12.12.2018, 23:49
Letzter Beitrag: norre
  Schrift horizontal skalieren im Mengentext Gerrie25 7 3.116 12.12.2018, 18:20
Letzter Beitrag: Gerrie25