whoops...
there are some n/a's in numeric columns.
FormatDateTime, FormatCurrency, FormatPercent, FormatNumber functions' arguments must be numbers. otherwise code will throw type mismatch error.
this may handle type mismatch error:
Sub M_snb_v2()
sn = Sheet1.Cells(1).CurrentRegion
With GetObject(ThisWorkbook.Path & "\template.docx")
For j = 2 To UBound(sn)
For jj = 1 To UBound(sn, 2)
.Variables("H_" & jj) = sn(j, jj)
If jj = 3 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatDateTime(sn(j, jj), 1)
If jj = 49 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 51 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 53 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 55 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 57 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 59 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 61 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 62 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 63 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 64 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 65 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 67 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
If jj = 69 And IsNumeric(sn(j, jj)) Then .Variables("H_" & jj) = FormatPercent(sn(j, jj))
Next
.Fields.Update
.SaveAs2 ThisWorkbook.Path & "\" & sn(j, 2) & ".docx"
Next
.Close 0
End With
End Sub