Here is one I designed for a POA a long time ago.
Sub FormLetter()
Application.ScreenUpdating = False
For Each c In Sheets("Addresses").Range("b5:b45")
If UCase(c.Offset(0, 9)) = "X" Then
x = InStr(c, ",")
[EnvName] = Trim(Right(c, Len(c) - x) & " " & Left(c, x - 1))
[EnvStreet] = Trim(c.Offset(0, 1))
[envCity] = c.Offset(0, 2) & ", " & c.Offset(0, 3) & " " & c.Offset(0, 4)
[himher] = Trim(Right(c, Len(c) - x))
[numtrees] = c.Offset(0, 10)
If [WhichLetter] = "Trees" Then
[amountdue] = c.Offset(0, 19)
Else
[amountdue] = c.Offset(0, 20)
End If
Ltr = [WhichLetter]
Sheets(Ltr).Range("f12") = [usedate]
If Range("Preview") Then
Sheets(Ltr).PrintPreview
Else
Sheets(Ltr).PrintOut
End If
End If
Next
Application.ScreenUpdating = True
End Sub