Se o início dos seus nomes de arquivos sempre tiver o mesmo formato; Ou seja, NN NN NN Filename.docx
, então isso deve funcionar;
Private Sub Document_Open()
Dim j As Long
Dim str As String
str = ActiveDocument.Name
Dim strRight As String
Dim strLeft As String
strRight = right(str, Len(str) - 9)
strLeft = left(str, 9)
For j = 1 To ActiveDocument.Sections.Count
With ActiveDocument.Sections(j)
.Headers(wdHeaderFooterPrimary).Range.Text = strRight + " middle " + strLeft
End With
Next
End Sub
EDIT: Desculpe, a edição inclui a possibilidade de usar ambas as partes do nome do arquivo. Pouco confuso, mas vai fazer o trabalho.