' ここから*************************
Dim objPrinter as Printer

Set objPrinter = Printer

Set Printer = objPrinter '' <ここで型が一致しないエラー発生
' *************************ここまで

はダメで、

' ここから*************************
Dim objPrinter as Printer

For Each objPrinter as Printers

If objPrinter.DeviceName = strPrinterName Then '' strPrinterNameはプリンタ名の入った変数。
Exit For
End If

Next

Set Printer = objPrinter '' <似たようなことしてるのに、これはOK。
' *************************ここまで

はセーフなんだけど。
どうして初めのソースはダメで、
後のソースの最後の行がエラーになるのか理解できない。
何かご存知のかた、一手ご教授。