This seems ok. I changed it just a bit. Of course one might want to edit it more to pass certain parts as input parameter values.
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Sub MakeFDF()
Dim sFileHeader As String
Dim sFileFooter As String
Dim sFileFields As String
Dim sFileName As String
Dim sTmp As String
Dim lngFileNum As Long
Dim PDF_FILE, SW_NORMAL As Integer
SW_NORMAL = 1
PDF_FILE = "cstest.pdf"
' Builds string for contents of FDF file and then writes file to workbook folder.
On Error GoTo ErrorHandler
sFileHeader = "%FDF-1.2" & vbCrLf & _
"%âãÏÓ" & vbCrLf & _
"1 0 obj<</FDF<</F(" & PDF_FILE & ")/Fields 2 0 R>>>>" & vbCrLf & _
"endobj" & vbCrLf & _
"2 0 obj[" & vbCrLf
sFileFooter = "]" & vbCrLf & _
"endobj" & vbCrLf & _
"trailer" & vbCrLf & _
"<</Root 1 0 R>>" & vbCrLf & _
"%%EO"
sFileFields = "<</T(name)/V(---NAME---)>>" & vbCrLf & _
"<</T(address)/V(---ADDRESS---)>>" & vbCrLf & _
"<</T(city)/V(---CITY---)>>" & vbCrLf & _
"<</T(postal)/V(---POSTAL---)>>" & vbCrLf & _
"<</T(opening)/V(---OPENING---)>>" & vbCrLf & _
"<</T(month)/V(---MONTH---)>>" & vbCrLf & _
"<</T(balance)/V(---BALANCE---)>>" & vbCrLf
sFileFields = Replace(sFileFields, "---NAME---", Range("Name").Value)
sFileFields = Replace(sFileFields, "---ADDRESS---", Range("Address").Value)
sFileFields = Replace(sFileFields, "---CITY---", Range("City").Value)
sFileFields = Replace(sFileFields, "---POSTAL---", Range("Postal").Value)
sFileFields = Replace(sFileFields, "---OPENING---", Range("Opening").Value)
sFileFields = Replace(sFileFields, "---MONTH---", Range("Month").Value)
sFileFields = Replace(sFileFields, "---BALANCE---", Range("Balance").Value)
sTmp = sFileHeader & sFileFields & sFileFooter
' Write FDF file to disk
If Len(Range("Account").Value) Then
sFileName = Range("Account").Value
Else: sFileName = "FDF_DEMOTEST"
End If
sFileName = ActiveWorkbook.Path & "\" & sFileName & ".fdf"
lngFileNum = FreeFile
Open sFileName For Output As lngFileNum
Print #lngFileNum, sTmp
Close #lngFileNum
DoEvents
Debug.Print sFileName
' Open FDF file as PDF
ShellExecute vbNull, "open", sFileName, vbNull, vbNull, SW_NORMAL
'Shell "cmd /c " & """" & sFileName & """", vbNormalFocus
Exit Sub
ErrorHandler:
MsgBox "MakeFDF Error: " + str(Err.Number) + " " + Err.Description + " " + Err.Source
End Sub