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:
Dim c As RangeDim startword As Stringstartword = "Reference: "Set c = ActiveDocument.Contentc.Find.ClearFormattingc.Find.Replacement.ClearFormattingWith c.Find.Text = startword.Replacement.Text = "".Forward = True.Wrap = wdFindStop.Format = False.MatchCase = False.MatchWildcards = TrueEnd Withc.Find.Execute
If .Execute() Then
refnumber = Right(c.Text, 5)
End If
End With[/code]
Thanks again
fruitloopy
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?
GrahamSkan
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 WithEnd Sub
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