Not well tested and I'm fairly confident there must be a better pattern...
Option Explicit
Sub exa()
With ThisWorkbook.Worksheets("Sheet1").Range("A5:H8")
.Value = CoerceVals(.Value)
End With
End Sub
Function CoerceVals(ByVal ary As Variant) As Variant()
Dim rexMatches As Object, x As Long, y As Long
ReDim aryRet(LBound(ary, 1) To UBound(ary, 1), LBound(ary, 2) To UBound(ary, 2))
With CreateObject("VBScript.RegExp")
.Global = False
.Pattern = "(.*)(\d{3}\.\d{4})(.*)"
For x = LBound(ary, 1) To UBound(ary, 1)
For y = LBound(ary, 2) To UBound(ary, 2)
If .Test(ary(x, y)) Then
Set rexMatches = .Execute(ary(x, y))
aryRet(x, y) = rexMatches(0).SubMatches(0) & _
" part " & rexMatches(0).SubMatches(1) & rexMatches(0).SubMatches(2)
aryRet(x, y) = Application.Trim(aryRet(x, y))
Else
aryRet(x, y) = ary(x, y)
End If
Next
Next
CoerceVals = aryRet
End With
End Function