VBA di Word - trovare una stringa di testo in cui una parola (non tutte le parole nella stringa) di avere uno stile particolare o formato

0

Domanda

Stavo cercando di costruire un po ' di codice per la ricerca di testo in cui una parola all'interno del testo è un particolare formato o stile. Per esempio, vorrei cercare il testo "Ciao mondo, tutto è buono", ma solo colpire casi in cui la parola "tutto" è in grassetto.

Ho pensato di cercare le prime parole "Ciao mondo", crollando la selezione, ricerca i successivi tre caratteri in avanti per la parola "tutto" in grassetto, crollando la selezione (se vero) quindi cercare il bit successivo le parole: "è buono". Questo comporterebbe l'identificazione di tutta la frase in grassetto la parola, ma mi sembra davvero inefficiente e non molto flessibile. Inoltre, per poi selezionare l'intera frase, devo scrivere il codice per spostare la selezione di inizio e di estendere la selezione in avanti. Poi ho bisogno di reimpostare la ricerca di continuare da quel punto.

C'è qualche facile/semplice/un modo più elegante per la ricerca di una stringa in cui solo una parola all'interno della stringa ha proprietà specifiche come grassetto? In particolare mi desidera che la ricerca di ignorare le istanze della frase in cui la parola non è in grassetto.

Ho trascorso un paio di ore di ricerca google e stackflow e riesco a trovare nulla su questo.

Non ho postato il codice, perché io non sono molto bravo a scrivere il codice, e voglio davvero capire se c'è un flessibile/elegante modo di fare quello che voglio. L'inflessibile root ho spiegato sopra è così inflessibile sono riluttante a disturbare la codifica qualcosa.

Grazie Jeremy

ms-word replace
2021-11-20 15:04:30
1

Migliore risposta

0

Il metodo che vorrei utilizzare per cercare la stringa e, se trovato, quindi cercare la stringa per la parola. Qui è un esempio.

Sub Demo()
    Dim StringRange As Range
    Dim MatchFound  As Boolean
    
    With ActiveDocument.Range.Find
        ' The string to find
        .Text = "Hello world, all is good"
        
        ' Search the document
        Do While .Execute
            ' Capture the string
            Set StringRange = .Parent.Duplicate
            
            With .Parent.Duplicate.Find
                ' The word to find
                .Text = "all"
                .Font.Bold = True
                
                ' Search the string
                If .Execute Then
                    MatchFound = True
                    StringRange.Select
                    
                    If MsgBox("Match found. Continue searching?", vbQuestion + vbYesNo) = vbNo Then
                        Exit Sub
                    End If
                End If
            End With
        Loop
        
        If MatchFound Then
            MsgBox "Finished searching document", vbInformation
        Else
            MsgBox "No match found", vbInformation
        End If
    End With
End Sub
2021-11-20 20:55:18

Wow. Vi ringrazio tanto. Questo è esattamente quello che volevo fare. È incredibilmente generoso di scrivere il codice come questo. Grazie. Sono stupita che la questione non venire più regolarmente. Ancora una volta, grazie. Che è assolutamente perfetto.
Jezza

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................