So I am assuming that despite the advice otherwise, you are using a ActiveX button to execute your code. Okay. In your ActiveX code:

Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
  Dim oFrm As UserForm1
  Set oFrm = New UserForm1
  oFrm.PrintForm
  Set oFrm = Nothing
lbl_Exit:
  Exit Sub
End Sub
In your userform:

Private Sub UserForm_Initialize()
  txtA.Text = ActiveDocument.FormFields.Item("Number").Result
  txtB.Text = ActiveDocument.FormFields.Item("Year").Result
  txtC.Text = ActiveDocument.FormFields.Item("Author").Result
  txtD.Text = ActiveDocument.FormFields.Item("Description").Result
lbl_Exit:
  Exit Sub
End Sub