Automatische aktualisierung bei Serienbriefen in Word
Hallo, bin neu in diesem Forum, hoffe ihr könnt mir weiterhelfen.
Aufgabe: Ich soll über Word 07 einen Serienbrief erstellen. Der Serienbrief soll eine Einladung sein, über eine Textbox wird der Name dargestellt.
Je nachdem wie Kurz bzw. Lang der Name ist soll er entsprechend größer bzw. kleiner gemacht werden.
Dazu hab ich den unten stehen Programmcode benutzt, was auch prima funktioniert.
Problem: Das Problem was ich habe wenn ich einen Seriendruck starte und vorher das Makro ausgeführt habe, verändert das Makro nur die
Seite die akutell geöffnet ist die restlichen bleiben unverändert.
Ziel: Ziel ist dass, das Makro für jede Seite (Einladung) ausgeführt wird beim drucken.
info: Wenn man bei Word auf <Sendungen --> Fertigstellen und zusammenführen --> einzelne Dokumente bearbeiten> geht alle Seiten aufruft und
dann erst das Makro ausführt geht das aber bei einer großen Datenbank dauert das zu lang ca. 20h.
Aufgabe: Ich soll über Word 07 einen Serienbrief erstellen. Der Serienbrief soll eine Einladung sein, über eine Textbox wird der Name dargestellt.
Je nachdem wie Kurz bzw. Lang der Name ist soll er entsprechend größer bzw. kleiner gemacht werden.
Dazu hab ich den unten stehen Programmcode benutzt, was auch prima funktioniert.
Problem: Das Problem was ich habe wenn ich einen Seriendruck starte und vorher das Makro ausgeführt habe, verändert das Makro nur die
Seite die akutell geöffnet ist die restlichen bleiben unverändert.
Ziel: Ziel ist dass, das Makro für jede Seite (Einladung) ausgeführt wird beim drucken.
info: Wenn man bei Word auf <Sendungen --> Fertigstellen und zusammenführen --> einzelne Dokumente bearbeiten> geht alle Seiten aufruft und
dann erst das Makro ausführt geht das aber bei einer großen Datenbank dauert das zu lang ca. 20h.
Sub ScaleTextboxText()
Dim shp As Shape
For Each shp In ActiveDocument.Shapes
If shp.TextFrame.HasText = True Then
With shp
' erst hochskalieren, falls die Textbox nicht ausgefüllt wird
Do While .TextFrame.Overflowing = False
.TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size + 1
Loop
' herunterskalieren, falls die Textbox überfüllt wird
Do While .TextFrame.Overflowing = True
.TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size - 1
Loop
End With
End If
Next shp
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 172589
Url: https://administrator.de/contentid/172589
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
1 Kommentar
Hallo,
warum soll der Name denn kleiner gemacht werden? Wenn ich einen Doppelnamen hätte, dann würde ich es bevorzugen, wenn dieser auch so auf der Einladung steht.
Wie wär es denn, anstatt der Textbox einen freien Platzhalter zu verwenden, der ganz "stupf" den Namen (so wie er in der Datenbank steht) an den dafür vorgesehenen Platz stellt.
Das Funktioniert sowohl bei einem Brief, als auch bei Briefumschlägen.
Dann braucht man auch kein Makro und auch nur die Daten "zusammenführen" und FERTIG.
Vielleicht hat´s ja weitergeholfen,
Gruß
warum soll der Name denn kleiner gemacht werden? Wenn ich einen Doppelnamen hätte, dann würde ich es bevorzugen, wenn dieser auch so auf der Einladung steht.
Wie wär es denn, anstatt der Textbox einen freien Platzhalter zu verwenden, der ganz "stupf" den Namen (so wie er in der Datenbank steht) an den dafür vorgesehenen Platz stellt.
Das Funktioniert sowohl bei einem Brief, als auch bei Briefumschlägen.
Dann braucht man auch kein Makro und auch nur die Daten "zusammenführen" und FERTIG.
Vielleicht hat´s ja weitergeholfen,
Gruß