Beiträge: 10
Themen: 3
Danke erhalten: 0 in 0 Posts
Danke gesagt: 0
Registriert seit: 22.04.2015
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
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
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.
Auf einigen Etiketten war der Text zu lang:
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:
Das hat bei allen Etiketten geklappt, allerdings hatte der längste Text nach der Verkleinerung nur noch knapp 7pt.
Gruß
Koter
•
Beiträge: 4.895
Themen: 198
Danke erhalten: 305 in 283 Posts
Danke gesagt: 65
Registriert seit: 14.12.2011
04.08.2015, 08:40
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2015, 10:39 von norre.)
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?
•
Beiträge: 10
Themen: 3
Danke erhalten: 0 in 0 Posts
Danke gesagt: 0
Registriert seit: 22.04.2015
Danke Koter für deinen Lösungsvorschlag hat super funktioniert
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
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
•
Beiträge: 4.895
Themen: 198
Danke erhalten: 305 in 283 Posts
Danke gesagt: 65
Registriert seit: 14.12.2011
04.08.2015, 18:30
(Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2015, 18:40 von norre.)
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
•
Beiträge: 1
Themen: 0
Danke erhalten: 0 in 0 Posts
Danke gesagt: 1
Registriert seit: 24.04.2023
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?
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
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:1 Benutzer bedankt Danke koter für diesen Beitrag
• haegar62