There are other potential issues involved here also. If the template is being used as Microsoft intended, then you should be creating new documents from the template. That document is 'ActiveDocument' and not 'ThisDocument' (which is the template). Then there are the issues of whether the content controls have been completed and whether the resulting filename contains illegal filename characters. Names can certainly do so and dates are a minefield in some languages, so you need to address both of those e.g. as shown below.
As Paul asserts, the macros remain in the template and as long as the document has access to the template, the macros will be available to the document. The person creating the report will thus have those macros and the recipient of the report should not require them.
Sub SaveReport()
'Graham Mayor - http://www.gmayor.com - Last updated - 05 Nov 2018
Dim Customer As String, Contract As String, ReportDate As String, strFilename As String, Temp_Folder As String
Temp_Folder = "\\FSP-FS\Customer Files\ZZZ\"
With ActiveDocument
If .SelectContentControlsByTitle("Customer_Name")(1).ShowingPlaceholderText = True Then
Beep
MsgBox "Complete Customer Name"
GoTo lbl_Exit
End If
Customer = .SelectContentControlsByTitle("Customer_Name")(1).Range.Text
If .SelectContentControlsByTitle("ContractNo")(1).ShowingPlaceholderText = True Then
Beep
MsgBox "Complete Contract no"
GoTo lbl_Exit
End If
Contract = .SelectContentControlsByTitle("ContractNo")(1).Range.Text
If .SelectContentControlsByTitle("Report_Date")(1).ShowingPlaceholderText = True Then
Beep
MsgBox "Complete Date"
GoTo lbl_Exit
End If
ReportDate = .SelectContentControlsByTitle("Report_Date")(1).Range.Text
strFilename = Customer & " - " & Contract & " - " & ReportDate
strFilename = CleanFilename(strFilename)
strFilename = Temp_Folder & strFilename & ".docx"
.SaveAs2 FileName:=strFilename, FileFormat:=Word.WdSaveFormat.wdFormatXMLDocument
End With
lbl_Exit:
Exit Sub
End Sub
Private Function CleanFilename(strFilename As String) As String
Dim arrInvalid() As String
Dim lng_Index As Long
'Define illegal characters (by ASCII CharNum)
arrInvalid = Split("9|10|11|13|34|42|47|58|60|62|63|92|124", "|")
'Remove any illegal filename characters
CleanFilename = strFilename
For lng_Index = 0 To UBound(arrInvalid)
CleanFilename = Replace(CleanFilename, Chr(arrInvalid(lng_Index)), Chr(95))
Next lng_Index
lbl_Exit:
Exit Function
End Function