Corel Draw X6/X7 Seriendruckausgabe - Text automatisch anpassen
#21
Hi Koter,

Klasse, dann habe ich ja alle Varianten durch xmasdanke

1000Dank

Schönen Abend noch
Destiny
Zitieren
#22
Hallo noch einmal,

ich habe jetzt das mit dem Stauchen (ohne Leerzeichen) versucht.
Hier kommt leider eine Fehlermeldung - habe ich etwas falsch übernommen?

[ATTACH=CONFIG]12329[/ATTACH]

LG
Destiny


Angehängte Dateien Thumbnail(s)
   
Zitieren
#23
Hallo Destiny,

destiny schrieb:Hier kommt leider eine Fehlermeldung - habe ich etwas falsch übernommen?

Ja, ich hatte die For-Blocks in Dein Makro aus Beitrag 19 eingebaut. Komplett muss es dann so aussehen:

Code:
Sub GrafiktextVerkleinern()
    Dim Seite As Page
    Dim Grafiktext As ShapeRange
    Dim Text As Shape
    Dim Breite As Double, cx As Double, cy As Double
    Breite = 80 '(%)
    ActiveDocument.Unit = cdrMillimeter
    ActiveDocument.ReferencePoint = cdrBottomCenter
    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
                'geschütztes Leerzeichen (Strg+Umschlt+Leertaste) durch Zeilenumbruch ersetzen
                If Text.SizeWidth > Seite.SizeWidth / 100 * Breite Then
                    Text.Text.Story = Replace(Text.Text.Story, Chr(160), vbCrLf)
                    Text.CenterX = Seite.CenterX
                    Text.CenterY = Seite.CenterY
                End If
                'Text stauchen
                If Text.SizeWidth > Seite.SizeWidth / 100 * Breite Then
                    Text.SizeWidth = Seite.SizeWidth / 100 * Breite
                    Text.CenterX = Seite.CenterX
                    Text.CenterY = Seite.CenterY
                End If
            Next
        End If
    Next
    Optimization = False
    ActiveDocument.EndCommandGroup
    ActiveWindow.Refresh
End Sub

Sonst habe ich nur noch die üblichen Einrückungen eingefügt.
So sieht man besser, wo welcher Block anfängt und endet.

Du kannst die nicht benötigten Zeilen auch einfach auskommentieren,
dann musst Du nichts löschen.

Bitte die folgende Frage nicht falsch verstehen! (ich bin einfach neugierig)
Programmierst Du schon lange?

Gruß

Koter
Zitieren
#24
Hallo Koter,

vielen Dank - nein, das war meine erste Makro-Anwendung.
Bin ein Programmier-Dummy ;-)

Hatte nur nach einer Lösung gesucht, zwecks Anpassung bei Seriendruck.
Aber das geht anscheinend nur mit so einer Makro-Lösung.

Vielen Dank
Destiny
Zitieren
#25
Hallo noch einmal,

ich hätte noch ein kleines Anliegen zur bereits erstellten Makro.
Diese funktioniert super - der Text wird durch die Angabe der %-Größe gestaucht.
Leider spring er dann automatisch immer auf die Seitenmitte.
Wenn der Text an der Stelle stehen bleiben soll - also die Y-Achse gleich bleibt,
was müsste ich im Code anpassen? (anstatt Seite.CenterY nehme ich an)


Code:
Sub GrafiktextVerkleinern()
    Dim Seite As Page
    Dim Grafiktext As ShapeRange
    Dim Text As Shape
    Dim Breite As Double, cx As Double, cy As Double
    Breite = 80 '(%)
    ActiveDocument.Unit = cdrMillimeter
    ActiveDocument.ReferencePoint = cdrBottomCenter
    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
                'geschütztes Leerzeichen (Strg+Umschlt+Leertaste) durch Zeilenumbruch ersetzen
                If Text.SizeWidth > Seite.SizeWidth / 100 * Breite Then
                    Text.Text.Story = Replace(Text.Text.Story, Chr(160), vbCrLf)
                    Text.CenterX = Seite.CenterX
                    Text.CenterY = Seite.CenterY
                End If
                'Text stauchen
                If Text.SizeWidth > Seite.SizeWidth / 100 * Breite Then
                    Text.SizeWidth = Seite.SizeWidth / 100 * Breite
                    Text.CenterX = Seite.CenterX
                    Text.CenterY = Seite.CenterY
                End If
            Next
        End If
    Next
    Optimization = False
    ActiveDocument.EndCommandGroup
    ActiveWindow.Refresh
End Sub


Merci vorab

Viele Grüße
Destiny
Zitieren
#26
Hallo Destiny,

destiny schrieb:Wenn der Text an der Stelle stehen bleiben soll - also die Y-Achse gleich bleibt,
was müsste ich im Code anpassen? (anstatt Seite.CenterY nehme ich an)

Code:
Sub GrafiktextVerkleinern()
    Dim Seite As Page
    Dim Grafiktext As ShapeRange
    Dim Text As Shape
    Dim Breite As Double, cx As Double, cy 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 > Seite.SizeWidth / 100 * Breite Then
                    Text.SizeWidth = Seite.SizeWidth / 100 * Breite
                End If
            Next
        End If
    Next
    Optimization = False
    ActiveDocument.EndCommandGroup
    ActiveWindow.Refresh
End Sub
Der ReferencePoint wurde geändert und der Code zum Zentrieren und für den Umbruch entfernt.
Hoffentlich habe ich es richtig verstanden, wenn nicht, bitte noch einmal melden.

Gruß

Koter
Zitieren
#27
Hallo Koter,

1000Dank - werde ich gleich testen

Merci vorab

LG
Destiny
Zitieren
#28
Hallo noch einmal,

das hat soweit super funktioniert - der Text wird nun jedoch nach links "gestaucht".
D.h. wenn der Text vorher horizontal mittig war, wird er nach links gestaucht
und fängt daher auch außerhalb des "Schildes" bzw. der Seite an.

Das "Stauchen" müsste horizontal mittig passieren und die Y-Position des Textes
jedoch nicht verändert werden....

....ich hoffe, das ist einigermaßen verständlich ;-)


Ginge das auch irgendwie?

Vielen Dank vorab

Destiny
Zitieren
#29
Hallo Destiny,

Falls ich es jetzt richtig verstanden habe, musst Du nur die Zeile Text.CenterY = Seite.CenterY entfernen.

Manchmal habe ich ein Brett vor dem Kopf.

Gruß

Koter
Zitieren
#30
Hallo Koter,

ja prima - genau das war es :icon_bravo:
Jetzt wird es zur Mitte hin gestaucht und bleibt an der Position.

Ich danke Dir vielmals

LG
Destiny
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Corel DRAW X5 S-Boxer 14 361 15.04.2024, 08:44
Letzter Beitrag: S-Boxer
  Corel Draw X7 - Lohnt eine "kleine" aktuellere Version anorak 2 393 12.04.2024, 19:52
Letzter Beitrag: anorak
  Programme COREL DRAW und Photopaint starten nicht mehr (Fehler 38) Neudi 2 137 27.03.2024, 09:02
Letzter Beitrag: Neudi
  Corel Draw - Schrift Quicksand nach Umwandeln in Kurven nicht plottbar annalotta 1 176 15.02.2024, 13:57
Letzter Beitrag: Piet
  Corel SE 21 - verknüpfte Bilder, merkwürdiges Verhalten lauren 2 200 15.02.2024, 10:47
Letzter Beitrag: lauren
  Corel Draw 2019 Text vertikal nilaschmi 5 260 14.02.2024, 17:53
Letzter Beitrag: skifan
  Makro - Text an Rechteck ausrichten benni313 5 328 31.01.2024, 09:20
Letzter Beitrag: benni313
  Corel Draw 2019 / Windows 11 vermutlich zu "alt" Emeraude 1 293 25.01.2024, 19:09
Letzter Beitrag: koter
  Corel Draw 2023 Himmel 1 815 20.01.2024, 11:21
Letzter Beitrag: T3P4
  Beim speichern Version automatisch auf alte Version stellen awitechnik 4 310 12.01.2024, 11:04
Letzter Beitrag: awitechnik