A couple of other options to check:
File|Options|General 'update fields before printing' and 'update linked data before printing'. That should be enough to guarantee the document has the current data (even if the source document is updated after opening) when printed.
As for a macro to update the fields on printing, try:
Code:
Private Sub Document_Open()
ActiveDocument.Fields.Update
End Sub
Note: this will only update fields in the body of the document - not in the header/footer, for example.