Word VBA - najít textový řetězec, kde jedno slovo (ne všechna slova v řetězci) mají zvláštní styl nebo formát

0

Otázka

Snažil jsem se sestavit nějaký kód, hledat text, kde jedno slovo v textu je určitý formát nebo styl. Například bych rád, aby hledat text "Hello world, to vše je dobré", ale trefil pouze případy, kdy slovo "všechny" je tučně.

Myslel jsem, že o hledání prvních pár slov, "Hello world "; hroutí výběr, vyhledávání další tři znaky vpřed pro slovo "všechny" v bold; hroutí výběru (pokud je to pravda), pak hledání další kousek za slova "je dobré". To by vedlo k identifikaci celé fráze s tučně slovo, ale zdá se, že opravdu neefektivní a velmi flexibilní. Také, pak vyberte celou větu, musím psát kód pro pohyb výběr zpátky na start a rozšířit výběr vpřed. Pak musím resetovat hledání pokračovat od této pozice.

Je tam nějaká jednoduchá/jednodušší/více elegantní způsob, jak vyhledávat řetězec, kde pouze jedno slovo v rámci řetězce má specifické vlastnosti, jako je tučné? Já konkrétně chcete hledat ignorovat instance věty, kde příslušné slovo není tučně.

Strávil jsem několik hodin hledání google a stackflow a nemůžu nic najít.

Nebyl jsem vyslán kód, protože nejsem moc dobrý v psaní kódu, a já opravdu chci vědět, jestli tam je flexibilní/elegantní způsob, jak dělat to, co chci. Nepružné root jsem vysvětlil výše, je tak nepružný, že jsem zdráhají rušit něco kódování.

Díky Jeremy

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

Nejlepší odpověď

0

Metoda chtěl bych využít je pro vyhledání řetězce a pokud je nalezen, pak hledat řetězec pro slovo. Zde je příklad.

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. Děkuji moc. To je přesně to, co jsem chtěl dělat. To je velmi velkorysé z vás psát kód, jako je tento. Děkuji. Jsem překvapen, že otázka není více pravidelně. Ještě jednou děkuji. To je naprosto perfektní.
Jezza

V jiných jazycích

Tato stránka je v jiných jazycích

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