ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1623
1623
EMPFEHLEN
-
Hi,
wie kann ich im folgenden script (word 2007 makro) die harte worttrennung nach dem 25.zeichen verhindern ?
Sub test4()
'
' test4 Makro
' Makro aufgezeichnet am 19.03.2010 von uubbs
'
Selection.MoveRight Unit:=wdCharacter, Count:=25
Selection.TypeParagraph
Selection.TypeText Text:=" "
End Sub
sollte das 25.zeichen ein wort treffen, so sollte der umbruch am zuvorgehenden freizeichen erfolgen um
die worttrennung zu vermeiden.
freue mich über jede hilfe.
-
21.03.10 19:21 #2
Am einfachsten wäre es, wenn du den gesamten Text erstmal in eine Variable kopiertst und damit arbeitest.
Dann zählst du einfach 25 Zeichen ab, ab hier kannst du mit InStr() das nächste bzw. mit InStrRev() das vorhergehende Leerzeichen suchen. Dann kopierst du einfach den Text mit einem nachfolgenden Zeilenumbruch in eine neue Variable (bzw. hängst ihn an, so kriegst du in der neuen Variable den Text mit Umbrüchen) und zählst wieder deine 25 Zeichen weiter nach vorn (und immer so weiter, bis zu am Ende des Textes bist).
Ist auch die Lösung für deine andere Frage weiter unten, so bist du beim Trennen nicht stur auf eine gewisse Zeichenanzahl begrenzt.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
hi doc,
danke für deine schnelle antwort.
da ich mich ab vergangenem donnerstag erst mit den makros angefangen habe zu beschäftigen, habe ich von
basic null ahnung, sorry. ich kann erahnen, was du meinst, aber mit der praktischen umsetzung in ein funktionierendes
skript scheitere ich kläglich.
was heisst "in eine variable kopieren" ? meinst du damit das deklarieren einer objektvariablen mit der dim-anweisung ?
in welcher umgebung "zähle ich 25 zeichen ab" ? meinst du damit die ausführung des word-makros ?
nur wenn es nicht zu viel verlangt ist: wäre ich dir möglich die von dir beschriebenen schritte als ausführbares script
niederzuschreiben ?
-
22.03.10 07:27 #4
Ich hab dir hier mal einen Code geschrieben, den du einfach als Makro in deine Word-Datei einfügst.
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Sub Trenne() Dim sFrom As String, sTo As String, NoCut As Boolean, iLimit As Integer, cnt iLimit = 25 'Anzahl der Zeichen Selection.HomeKey Unit:=wdStory 'An den Anfang Selection.EndKey Unit:=wdStory, Extend:=wdExtend 'Alles wählen sFrom = Selection.Text 'Text in Variable kopieren Do 'Schleife cnt = InStr(iLimit, sFrom, " ") 'Anzahl der Zeichen zählen 'Wenn du nich das nächste sondern das vorherige Leerzeichen willst, müsste die Zeile 'cnt = InStrRev(iLimit, sFrom, " ") 'heißen. If cnt < 1 Then cnt = Len(sFrom): NoCut = True 'nächstes Leerzeichen suchen sTo = sTo & Left(sFrom, cnt) & vbNewLine 'Text in neuen String kopieren & Zeilenumbruch anhängen If NoCut = False Then sFrom = Right(sFrom, Len(sFrom) - cnt) 'ursprünglichen Text verkleinern Loop Until NoCut = True 'bis Urspung kleiner als festgelegte Zeichenanzahl Selection.Text = sTo 'Ergebnis wieder in Dokument kopieren End Sub
Ist kommentiert, also zum lernen für dich.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
...danke
bin am testen (und lernen).
klappt nicht auf anhieb:
problem 1 mit InStrRev:
es kommt zur fehlermeldung
Laufzeitfehler '13':
Typen unverträglich
debugger weist auf zeile
cnt = InStrRev(iLimit, sFrom, " ") 'Anzahl der Zeichen zählen
problem 2 mit zeilenumbruch:
skript bricht zeilen, die länger als 25 zeichen sind, und setzt den "rest" der zeichen (>25) in die nächste zeile
mit anschl. umbruch. die nächste abarbeitung erfolgt in der zeile darunter. eigentlich sollte der "rest" aus der
zeile mit dem text der folgezeile wieder die bedingung erfüllen:
"umbruch nach 25 zeichen am freizeichen davor/danach" .
problem 3 habe ich erst jetzt erkannt:
beim zählen der zeichen (25) gibt es scheinbar probleme mit zeilen, die <25 zeichen haben. die sollten eigentlich
ignoriert werden.
idealerweise sollte das kommando lauten
(a) suche zeile
mit >25 zeichen
(b) gehe zurück zu nächstmöglichem freizeichen
(c) mache zeilenabsatz
[da in den "langen" passagen zeilenumbrüche fehlen, wird die zeile nach dem umbruch in der regel wieder >25 zeichen]
(d) prüfe die "neue" zeilenlänge auf die bedingung >25 zeichen, falls ja, weiter mit (b)
problem 4 (ausnahmen):
was ist, wenn in einer langen zeile keine freizeichen vorkommen ?
hier sollte harter umbruch erzwungen werden.
beispiel:
Internet: https://beispielseite.für.mögliche.ü...0071321:de:pdf).
ich teste weiter und berichte.
-
22.03.10 16:58 #6
Zu 1) Sorry, hab hier die Argumente falsch gereiht: Muss
heißen.Code vb:1
cnt = InStrRev(sFrom, " ", iLimit)
Zu 2) Eigentlich nicht, der Code nimmt eine Zeile so wie gewünscht und zählt dann wieder bis 25 Zeichen weiter. Bei so geringen Werten wie 25 sieht das teilweise komisch aus, da manchmal schon ein bis 2 Wörter diese 25 Zeichen erreichen, wenn du das ganze z.B. mit 50 bis 60 Buchstaben testest, wirst du sehen dass der Code ohne weiters das tut, was er soll.
Zu 3) Ich hab hier natürlich einen generellen Code geschrieben, um Anpassungen wirst du ja nicht herum kommen. Eventuell musst du für die Zeilenweise abarbeitung eine weitere Schleife einbinden.
Zu 4) Du kannst für solche Fälle ja auch nach anderen Trennzeichen (Komma, Semikolon, Bindestrich, ...) suchen und halt notfalls (cnt = 0 -> kein Leerzeichen gefunden) einen harten Umbruch machen.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
Ähnliche Themen
-
Zeilenumbruch in Word mit Makro erstellen
Von richard32 im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 20.03.10, 15:54 -
Word: Zeilenumbruch nach Tabelle verhindern
Von deusfalsus im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 02.10.07, 14:25 -
Zeilenumbruch verhindern
Von sorashi im Forum CSSAntworten: 4Letzter Beitrag: 19.11.04, 21:02 -
Zeilenumbruch bei H1 verhindern
Von schampar im Forum HTML & XHTMLAntworten: 6Letzter Beitrag: 06.05.04, 16:14 -
VBA Makro von Word 6.0 auf Word 2000...
Von maeaexx im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 06.03.04, 12:57





Zitieren

Login





