Instead of
firstname = ActiveDocument.FormFields("First_Name").Result
lastname = ActiveDocument.FormFields("Last_Name").Result
you need
firstname = ActiveDocument.MailMerge.DataSource.DataFields("First_Name").Value
lastname = ActiveDocument.MailMerge.DataSource.DataFields("Last_Name").Value
The name in quotes is case-sensitive (unusual in Windows programming). It has to match the name that Word is actually using, which may not be identical to the one in the data source.