There is probably a clever way to do it using regular expressions, but you can also parse the string as a collection of words:
Sub Test()
Dim I As Long, J As Long, WCnt As Long
Dim S As String, WordStr As String, ResultStr As String
S = "Form 4 Formule 4 CERTIFICATE OF OWNERSHIP CERTIFICAT ENREGISTRE Land Act,S.N. 1981, c. L-1.1, s.63 Loi sur l'enregistrement foncier, L.N.B. de 1981, chap. L-11, art.33 wer 50994121 Owner Propriétaire"
ResultStr = ""
WCnt = WordCount(S, " ")
For I = 1 To WCnt
WordStr = ExtractWord(S, " ", I)
J = Len(WordStr)
If J >= 7 And J <= 12 And IsNumeric(WordStr) Then
ResultStr = WordStr
End If
Next I
If ResultStr <> "" Then
MsgBox "Result = " & ResultStr, , "Test Result"
Else
MsgBox "String not found", , "Test Result"
End If
End Sub
Function ExtractWord(ByVal AnyString As String, ByVal WordDelimiters As String, ByVal WordNumber As Long) As String
Dim SA() As String
Dim ResultWord As String
NormalizeDelimiters AnyString, WordDelimiters 'reduce multiple word delimiters to a single delimiter
AnyString = CollapseString(AnyString, WordDelimiters)
SA = Split(AnyString, WordDelimiters)
If WordNumber > 0 And WordNumber <= UBound(SA) + 1 Then
ResultWord = SA(WordNumber - 1)
Else
ResultWord = vbNullString
End If
ExtractWord = ResultWord
End Function
Function WordCount(ByVal AnyString As String, ByVal WordDelimiters As String) As Long
Dim SA() As String
NormalizeDelimiters AnyString, WordDelimiters 'reduce multiple word delimiters to a single delimiter
AnyString = CollapseString(AnyString, WordDelimiters)
SA = Split(AnyString, WordDelimiters)
WordCount = UBound(SA) + 1
End Function
'Replace multiple word delmiters with one word delimiter
Sub NormalizeDelimiters(ByRef AnyString As String, ByRef WordDelimiters As String)
Dim Delimiter As String
Dim SLen As Long
Dim I As Long
SLen = Len(WordDelimiters)
If SLen > 1 Then
If InStr(WordDelimiters, Chr(30)) > 0 Then 'preference for space char
Delimiter = Chr(30)
Else
Delimiter = Left(WordDelimiters, 1)
End If
For I = 1 To SLen
AnyString = VBA.Replace(AnyString, Mid(WordDelimiters, I, 1), Delimiter)
Next I
WordDelimiters = Delimiter
End If
End Sub
'Remove multiple delimiters in any string
Function CollapseString(ByVal AnyString As String, ByVal Delimiter As String) As String
Dim MultiDelims As String
Dim DCnt As Long 'Delimiter count
Dim SPos As Long
For DCnt = 20 To 2 Step -2
MultiDelims = String(DCnt, Delimiter)
SPos = InStr(AnyString, MultiDelims)
If SPos > 0 Then
AnyString = Replace(AnyString, MultiDelims, Delimiter)
End If
Next
CollapseString = AnyString
End Function