Word VBA - găsi un șir de text în cazul în care un singur cuvânt (nu toate cuvintele din șir) au un anumit stil sau format

0

Problema

Am fost încercarea de a construi un cod pentru a căuta un text în care un cuvânt în text este un format special sau stil. De exemplu, aș dori pentru a căuta textul "Hello world, totul este bine", ci doar a lovit cazuri în care cuvântul "tot" este în bold.

M-am gândit să caut primele cuvinte "Hello world "; colaps selecție, în căutarea de următoarele trei caractere înainte de cuvântul "toate" în bold; colaps de selecție (dacă este adevărat), apoi de căutare următorul bit pentru cuvintele "este bun". Acest lucru ar duce la identificarea toată fraza cu bold cuvânt, dar se pare foarte ineficient și nu foarte flexibil. De asemenea, pentru a selecta apoi întreaga propoziție, trebuie să scrie cod pentru a muta selecția de la început și extinde selecția înainte. Apoi am nevoie pentru a reseta căutare pentru a continua mai departe de această poziție.

Există unele ușor/ușor/mai elegant mod de a căuta un șir în care doar un singur cuvânt în șir are proprietăți specifice, cum ar fi bold? În mod special am dori căutare pentru a ignora cazurile de expresie în cazul în care cuvântul nu este în bold.

Am petrecut câteva ore în căutarea google și stackflow și nu pot găsi nimic în privința asta.

N-am mai postat de cod pentru că eu nu sunt foarte bun la scris cod, și chiar vreau să înțeleg dacă există un sistem flexibil/mod elegant de a face ceea ce vreau. Inflexibil root am explicat mai sus este atât de inflexibil sunt reticente în a deranja codificare ceva.

Multumesc Jeremy

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

Cel mai bun răspuns

0

Metoda as folosi pentru a căuta șir și, dacă este găsit, apoi de căutare în șir pentru cuvânt. Aici este un exemplu.

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. Vă mulțumesc foarte mult. Acest lucru este exact ceea ce am vrut să fac. Este incredibil de generos din partea ta pentru a scrie cod de genul asta. Multumesc. Sunt uimit de întrebarea nu vine regulat. Încă o dată, vă mulțumesc. Care este absolut perfect.
Jezza

În alte limbi

Această pagină este în alte limbi

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