tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1457
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    happyeater happyeater ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Liebe *,

    ich möchte einen Bereich in einem Word-Dokument daraufhin überprüfen, ob bestimmte (bei der Weiterverarbeitung unerlaubte) Textformatierungen vorliegen (z.B. doppelt durchgestrichen oder fett&unterstrichen).
    Dazu fallen mir zwei Lösungsmöglichkeiten ein:
    1. Im Text "blind" nach den Formatierungen suchen
    2. Den Text Wort für Wort durchgehen und jedes Wort auf die Textformatierung hin überprüfen.

    Leider bin ich kein Experte in VB, daher weiß ich nicht, ob Möglichkeit 1 überhaupt geht. Ich habe mich jedenfalls für Möglichkeit 2 entschieden und löse das so, wie im untenstehenden Code gezeigt.
    Problem: Das ist saulangsam. Wenn der Text bloß eine Din-A4-Seite lang ist, kann man während der Überprüfung schon fast einkaufen gehen. Daher die Frage: Hat jemand einen Vorschlag, wie das auch schneller geht?

    Vielen Dank!
    happyeater

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
        For i = 1 To (ActiveDocument.Tables(2).Rows.Count - 2)
            zelle = ActiveDocument.Tables(2).Cell(i, 2)
            zelle.Select
            intWoerter = Selection.Words.Count - 1
     
                For j = 1 To intWoerter
                    If ((Selection.Words(j).Font.Underline And Selection.Words(j).Font.Bold) _
                    Or (Selection.Words(j).Font.DoubleStrikeThrough) _
                    Or (Selection.Words(j).Font.Animation) _
                    Or (Selection.Words(j).Font.Emboss) _
                    Or (Selection.Words(j).Font.Engrave) _
                    Or (Selection.Words(j).Font.Outline) _
                    Or (Selection.Words(j).Font.Shadow) _
                    Or (Selection.Words(j).Font.StrikeThrough And Selection.Words(j).Font.Bold) _
                    Or (Selection.Words(j).Font.StrikeThrough And Selection.Words(j).Font.Underline) _
                    Or (Selection.Words(j).Font.StrikeThrough And Selection.Words(j).Font.Italic) _
                    Or (Selection.Words(j).Font.SmallCaps And Selection.Words(j).Font.Bold) _
                    Or (Selection.Words(j).Font.SmallCaps And Selection.Words(j).Font.StrikeThrough) _
                    Or (Selection.Words(j).Font.SmallCaps And Selection.Words(j).Font.Underline) _
                    Or (Selection.Words(j).Font.SmallCaps And Selection.Words(j).Font.Italic) _
                    Or (Selection.Words(j).Font.SmallCaps And Selection.Words(j).Font.Superscript) _
                    Or (Selection.Words(j).Font.Underline And Selection.Words(j).Font.Superscript) _
                    Or (Selection.Words(j).Font.Underline And Selection.Words(j).Font.Subscript) _
                    Or (Selection.Words(j).Font.Bold And Selection.Words(j).Font.Superscript) _
                    Or (Selection.Words(j).Font.Bold And Selection.Words(j).Font.Subscript) _
                    Or (Selection.Words(j).Font.Italic And Selection.Words(j).Font.Superscript) _
                    Or (Selection.Words(j).Font.Italic And Selection.Words(j).Font.Subscript)) _
                    Then
                        MsgBox("Fehlermeldung")
                    End If      ' Doppelformatierungen
                Next    ' jedes einzelne Wort pruefen
        Next    ' jede Tabellenzeile durchgehen
     

  2. #2
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Du könntest doch den zu durchsuchenden Teil zwischen 2 Textmarken stecken, alles markieren und dann einfach die Formatierungen löschen/ändern:
    Code vb:
    1
    2
    3
    4
    
    Dim oDoc As Document
    Set oDoc = ActiveDocument
    oDoc.Range(Start:=oDoc.Bookmarks("Teil1").Range.Start, End:=oDoc.Bookmarks("Teil2").Range.Start).Select
    'Ab hier kannst du dann mit Selection weiterarbeiten


    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?

  3. #3
    happyeater happyeater ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hallo Doc,

    danke für den schnellen Hinweis!
    Ich möchte die Formatierung aber nicht einfach löschen: Die Überprüfung soll Projektmitarbeitern zeigen, wo sie an ihrem eigenen Text noch etwas ändern müssen. Sie sollen aber selbst entscheiden, WIE sie die Formatierung dann ändern, daher will ich sie nur auf die Stelle hinweisen, wo etwas nicht in Ordnung ist.

    Gibt es (vgl. meine Möglichkeit 1, oben) einen Weg, in einer Selection oder in einem Paragraph (oder innerhalb einer Range) nach einer konkreten Textformatierung (und auch nach Kombinationen, also fett&unterstrichen) zu suchen?
    So wie Selection.Find.Style, aber ohne eine definierte Word-Formatvorlage?
    Vielleicht ginge das schneller ...

    Viele Grüße
    happyeater
     

  4. #4
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Du kannst ja die Selection auf Eigenschaften von Font abfragen, würde so aussehen:
    Code vb:
    1
    
    If Selection.FormattedText.Bold Then MsgBox "Text Fett!"
    Welche Wörter jetzt genau betroffen ist kannst du zwar nicht abfragen, für einen Hinweis reicht die Abfrage aber allemal.


    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?

  5. #5
    happyeater happyeater ist offline Rookie
    Registriert seit
    Apr 2010
    Beiträge
    5
    Hallo Doc,

    nochmal danke für den Hinweis; ich habe selbst noch etwas ausprobiert und bin jetzt bei einer ellenlangen Liste von Prüfungen der Form

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
                With Selection.Find
                    .ClearFormatting
                    .Font.Bold = True
                    .Font.Underline = True
                    .Execute FindText:="", Format:=True, Forward:=True
                    If .Found = True Then
                        ' Fehlermeldung
                    End If

    ... und das für jedes zu kontrollierende Format. Ist von der Schnelligkeit her ok und wird mir von der Funktionalität wohl ausreichen. Hoffe jetzt nur, dass das auch mit allen Word-Versionen läuft. Aber vielleicht fällt mir mit Deinem Hinweis noch eine bessere Methode ein.

    Viele Grüße
    happyeater
     

Ähnliche Themen

  1. automatische textformatierung in word-tabellen
    Von c_83 im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 02.10.07, 12:37
  2. Word-Makro - Datei auf Aktualität überprüfen
    Von greendivision im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 21.03.07, 23:49
  3. VBA Makro von Word 6.0 auf Word 2000...
    Von maeaexx im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 06.03.04, 12:57
  4. Makro in Word
    Von Dark_Nickisch im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 25.02.04, 18:10
  5. VBA + Word 2k +Makro
    Von dPo2000 im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 07.01.02, 13:15

Stichworte