View Single Post
 
Old 08-18-2022, 01:06 PM
wordfieldcode wordfieldcode is offline Windows 10 Office 2010
Novice
 
Join Date: Aug 2022
Posts: 3
wordfieldcode is on a distinguished road
Default Selecting and returning text from a find search of a Word field using Excel VBA

Hello,

I am currently trying to iterate through a massive word document with many fields, and to delete fields whose code don't match a specified format, and then to extract a number from each of the remaining fields to check against another file. My problem is that I understand with Selection.Find, you can access the text using Selection.Text. When I use field.code.find, I cannot figure out how to save the matching text to a variable for further work.

I have excluded the previous portions of the code for privacy reasons, but the code works entirely, I just don't know what to change the "tenum =" line to make this work.

Code:
    'first let's open the report
    wrdApp.Documents.Open (reportstr)
    Set analystreport = wrdApp.Documents(reportfile)
    analystname = "D"
    analystreport.SaveAs2 Filename:=reportpath & analystname
    Set anactiwindow = analystreport.ActiveWindow
    'Now let's delete the pages from the end of the expenditures to the end of the book
    pageCount = analystreport.ComputeStatistics(wdStatisticPages)
    anactiwindow.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=421   ''''''insert page after the last expenditure to delete all toward the end of the document
    Set rgepages = anactiwindow.Selection.Range
    anactiwindow.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageCount
    rgepages.End = anactiwindow.Selection.Bookmarks("\Page").Range.End
    rgepages.Delete
    anactiwindow.Selection.TypeBackspace
    anactiwindow.Selection.Delete Unit:=wdCharacter, Count:=1
    
    'Now let's get rid of beginning of book up to first expenditure
    anactiwindow.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=1
    Set rgepages = anactiwindow.Selection.Range
    anactiwindow.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=24 ''''''insert page before the first expenditure to delete beginning of book
    rgepages.End = anactiwindow.Selection.Bookmarks("\Page").Range.End
    rgepages.Delete

    'Now we will loop through the fields. If the field is a chapter, delete it, if the field is an expenditure we need to check to see if it is one of the expenditures for this analyst and keep it
    For Each wrdfield In analystreport.Fields
        wrdfield.Select
        With wrdfield.Code.Find
            .MatchWildcards = True
            .text = "[0-9]{1,2}.[0-9]{3}"
            .Execute
            If .Found = True Then
                tenum = wrdfield.Code.text
            Else
                wrdfield.Delete
            End If
        End With
    Next
Attached Images
File Type: png Screenshot 2022-08-18 130421.png (59.1 KB, 9 views)
Reply With Quote