fruitloopy
asked on
VBA Word macro - how to get characters after the searched for string
I am trying to create a macro which will find a reference number in the document and save as a variable but I cannot seem to find out how to do this.
The reference number will always be 5 characters after the word "Reference: " so I am hopefully looking for some simple code allong the lines of:
Content.Find.Text = "Reference: " + 5
This is my code so far:
Any thoughts?
The reference number will always be 5 characters after the word "Reference: " so I am hopefully looking for some simple code allong the lines of:
Content.Find.Text = "Reference: " + 5
This is my code so far:
Dim c As Range
Dim startword As String
startword = "Reference: "
Set c = ActiveDocument.Content
c.Find.ClearFormatting
c.Find.Replacement.ClearFormatting
With c.Find
.Text = startword
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWildcards = True
End With
c.Find.Execute
Any thoughts?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Actually Graham if you're still there I have a very similar issue.
I need to run a second search for the words "Closing Date: " and to match the next set of numbers and words of a date in the format - 12th November 2016, etc. Obviously the date (1-31) and the number of characters in the month can change.
I've been searching around but can't figure out how to search for a variable length of characters up to a maximum of 20.
Any idea?
I need to run a second search for the words "Closing Date: " and to match the next set of numbers and words of a date in the format - 12th November 2016, etc. Obviously the date (1-31) and the number of characters in the month can change.
I've been searching around but can't figure out how to search for a variable length of characters up to a maximum of 20.
Any idea?
This works with the dates I have tested so far:
Sub FindDate()
Dim c As Range
Dim startword As String
Dim CloseDate As String
startword = "Closing Date: "
Set c = ActiveDocument.Content
With c.Find
.Text = startword & "[0-9]{1,2}[d-t]{2} [JFMASOND]{1}[a-z]{2,8} [0-9]{4}"
.MatchWildcards = True
If .Execute() Then
CloseDate = Split(c.Text, ": ")(1)
End If
End With
End Sub
ASKER
That's fantastic Graham. Works like a dream!
Thank you
Thank you
ASKER
I knew it would be something as simple as that. Thank you.
Final code (Modified as the reference number begins with a capital letter):
[code]Dim c As Range
Dim startword As String
Dim refnumber As String
startword = "Reference: "
Set c = ActiveDocument.Content
c.Find.ClearFormatting
c.Find.Replacement.ClearFo
With c.Find
.Text = startword & "[A-Z0-9]{5}"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
If .Execute() Then
refnumber = Right(c.Text, 5)
End If
End With[/code]
Thanks again