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 standard 2021 Lorei 9 1.047 Gestern, 12:37
Letzter Beitrag: Softwaresab
  Importierte AI-Datei in Corel Draw wird nicht richtig dargestellt Kurtus 5 181 20.11.2024, 11:01
Letzter Beitrag: Kurtus
  Corel Draw Objekt dupliziert mehrfach Berlinerillustrator 1 280 24.09.2024, 10:55
Letzter Beitrag: Berlinerillustrator
  Fehlerhafte Knoten-Griffe automatisch finden asterix 47 5.137 23.06.2024, 12:56
Letzter Beitrag: asterix
Question QR-Codes automatisch generieren Lisa1992 1 263 31.05.2024, 07:02
Letzter Beitrag: Litschi
  Draw 2021 - Funktion Platzhaltertext Herbertchen 0 649 28.05.2024, 13:01
Letzter Beitrag: Herbertchen
  Text partiell ersetzen Karthagos 2 436 26.05.2024, 21:09
Letzter Beitrag: Karthagos
  Corel DRAW X5 S-Boxer 14 2.298 15.04.2024, 08:44
Letzter Beitrag: S-Boxer
  Corel Draw X7 - Lohnt eine "kleine" aktuellere Version anorak 2 1.734 12.04.2024, 19:52
Letzter Beitrag: anorak
  Programme COREL DRAW und Photopaint starten nicht mehr (Fehler 38) Neudi 2 1.618 27.03.2024, 09:02
Letzter Beitrag: Neudi