If you're using formfields, the document will already require Forms protection. In that case, you could use another text formfield for both the 'button' and the approval text.
For example, if you insert such a formfield and make its default text:
Click Here to Approve
you could attach an on-entry macro to it, coded as follows:
Code:
Sub Approval()
With ActiveDocument.FormFields("Text1")
.Result = "Approved by " & Environ("Username") & " on " & Format(Now(), "DDDD, D MMMM YYYY @ hh:mm")
.Enabled = False
End With
End Sub
where the formfield's internal bookmark name is 'Text1'.
Do note that, as coded, only the approval formfield is locked.