Word - längere Zeilen automatisch einfärben?

KingLM97

Lieutenant
Registriert
Mai 2012
Beiträge
908
Hallo,

ich habe als Praktikant die rumreiche Aufgabe bekommen, aus einer Worddatei, welche 2.400 Seiten besitzt, die längsten Zeilen rot zu makieren (siehe Bild).

Da das aber ganze 2.400 Seiten weiter so geht und ich nach 300 Seiten keine Lust mehr darauf habe, kam mir in den Kopf, das ganze Word von selbst machen lassen. Jetzt kommt der Punkt: Ich habe keine Ahnung von VB, kann von daher auch kein Makro schreiben. Im Internet habe ich auch bisher nix gefunden (da sowieso ca. 80% aller seiten gesperrt sind).

Die Zeilen haben immer die selbe Anzahl an Zeichen, nur wenn der Ping dreistellig wird, muss ich die Zeile rot markieren. Hat jemand einen Code für ein solches Makro, welches die Zeilen automatisch einfärbt, oder irgend eine andere Lösung?
Ihr könnt euch bestimmt denken, wie toll diese Arbeit ist...

MfG
Lukas
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    13,8 KB · Aufrufe: 222
Ich würde das ganz einfach per Excel machen.
Einfach einmal nachzählen, das wievielte Zeichen die dritte Stelle ist (oder halt das "m" von ms), und dann per Formel prüfen, ob eben an jener Stelle eine Zahl oder ein "m" steht.
Rot färben kannst du dann ganz einfach per bedingter Formatierung.
 
Kopier mal 2400 Seiten Text in Excel .... ähm ob das wirklich gut geht aus Word herraus .
 
In XLS kopieren. Checken ob len(aN) > xxx
 
Bitte doch deinen Auftraggeber um Hilfe. Das zeugt von Interesse und kommt während eines Praktikums sicher gut an ;)
 
Moin Lukas,

stelle doch einmal eine beispielhafte Word-Datei mit ca. 10 anonymisierten Pings. Dann sollte das zu machen sein.
 
Ich würde das auch per Excel machen. Dazu am Besten vorher direkt vor und hinter der entscheidenden Zahl einen Tabulator einfügen. Geht mit Regular Expressions eigentlich recht einfach. Kannst zum Beispiel all Vorkommen von "Zeit=" durch "Zeit=\t" und alle Vorkommen von "ms " durch "\tms " ersetzen. Wenn Du das danach in Excel einfügst, fängt er nach jedem Tab eine neue Zelle an, sprich die entscheidende Zahl steht in einer eigenen Zelle.

Dann musst Du nur noch auf Werte >=100 überprüfen.
 
Einfach, aber ne ziemlich beschissene Lösung imho:
Code:
Sub ColorParagraphs()
    For Each para In ActiveDocument.Paragraphs
        If Len(para.Range) > 51 Then
            para.Range.Font.ColorIndex = wdRed
        Else
            para.Range.Font.ColorIndex = wdBlack
        End If
    Next para
End Sub
Färbt einfach alle Paragraphen mit mehr als 51 Zeichen rot, alle Anderen schwarz.
Da auf deinem Screenshot jede Zeile ein extra Paragraph ist, müsste das klappen.
Evtl. musst du die Zahl der Zeichen anpassen. Sollte die IP nicht immer die gleiche Länge haben funktionierts nicht.

Btw. was ist denn das eigentlich für ne Idiotenaufgabe? 2.400 Seiten per Hand durchgehen?!
Oder ist das ein Praktikum im IT Bereich? Evtl. will dein Arbeitgeber ja, dass du ein bisschen scripten lernst.
 
Zuletzt bearbeitet:
Färbt einfach alle Paragraphen mit mehr als 51 Zeichen rot
:stacheln:

Paragraphen sind diese Dinger, § - ein Englischer Paragraph ist ein Absatz.

→ Und das führt zur Eingangsfrage zurück. In Word gibt es keine Zeilen! Das klingt irre, aber es gibt nur Zeichen und Absätze.
Aber das Makro von grantig ist schon mal ein Ansatzpunkt (ich klaue mal). Es gilt aber eine Frage zu klären: was sind denn «die längsten Zeilen»?

Aus profaner Sicht müsste ich alle Absätze 1x ablaufen und deren größte Länge (in Zeichen) ermitteln. Dann kann ich mit einer Formel über die größte ermittelte Länge sagen, dass 98% dieser Länge als «längste Zeilen» gelten und das alles erröten lassen (im 2. Durchlauf).
Code:
Sub Täscht()
Dim Para As Paragraph
Dim Anzahl As Long
Dim I As Long
 Anzahl = 0
 For Each Para In ActiveDocument.Paragraphs
  'I = Para.Range.Characters.Count
  I = Len(Para.Range) 'ach, das geht auch?
  If I > Anzahl Then Anzahl = I
 Next
 I = Anzahl * 0.98 'meine 98 Prozent
 For Each Para In ActiveDocument.Paragraphs
  If Len(Para.Range) > I Then
   Para.Range.Font.ColorIndex = wdRed
  Else
   'Mit einer immer falschen Bedingung kreigt man
   'bequem alles zurück auf Schwarz.
   Para.Range.Font.ColorIndex = wdBlack
  End If
 Next
Beep' Aufwachen :-D
End Sub
Das sollte helfen.

CN8
 
Erstmal vielen Dank für die ganzen Tipps. Ich habe es, wie empfohlen mit Excel gemacht. Einfach die 2400 Seiten einkopiert, dann alles ausgewählt und "Text in Spalten" angewendet. Schwupps, hatte ich alles parat. Also Bedingte Formatierung angewandt und alles, was über 99 liegt, rot färben lassen :p
Ich wäre nie auf die Idee gekommen, das in Excel zu machen...stattdessen habe ich lieber handlich 600 Seiten durchgemacht...

@Grantig
Ja, ein Praktikum im IT-Bereich. Auf Nachfrage meinte mein Chef, dass ich das einfach nur erledigen sollte. Wie ich das anstelle, wäre ihm egal gewesen. Und danke für den Code. Ich habe zwar keine Ahnung wie genau der funktioniert und ob er funktioniert, trotzdem danke :)

@cumulonimbus8
Auch danke für deinen Code, habe da zwar ebenfalls keinen Schimmer von und ob er funktioniert...kp. :(

Ich werde die Codes gleich mal Testen, erspart mir in Zukunft immerhin ein wenig arbeit :p
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    244,5 KB · Aufrufe: 110
@cumulonimbus8
Lol, über meinen peinlichen Übersetzungsfehler muss ich glatt selber lachen. Danke für die Korrektur :D

@Lukas97
Google am besten mal nach "Word VBA Makros", wenn du verstehen willst was du mit dem Script anfangen sollst.
 
Zurück
Oben