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