その後、一部PCにおいてExcel VBA 上で指定したプリンター以外から印刷される問題が発生、原因はプリンターの指定方法に誤りがあったためです。
多分忘れるので備忘録としてExcel VBA プリントサーバー導入後もプリンターを指定して印刷させる方法をメモ。
今までのVBA
Worksheets("hoge").PrintOut ActivePrinter:="<printer>"
既定プリンターを確認
現在既定プリンターとなっているプリンター名を確認したい場合は下記関数を使います。Application.ActivePrinter
プリントサーバー上のプリンター
プリンター名の前にプリントサーバーを提供するサーバー名を書きます。サーバー名がないと対象プリンターがないため、既定プリンターから印刷されました。
Worksheets("hoge").PrintOut ActivePrinter:="\\<servername>\<printer>"
余談:登録されたプリンター名を全て表示する
Dim sh As Object Dim obj As Object Dim ssfPRINTERS As Integer ' ShellSpecialFolderConstants ssfPRINTERS = 4 Set sh = CreateObject("Shell.Application") ' Printer Names For Each obj In sh.Namespace(ssfPRINTERS).Items Debug.Print obj.Name Next Set sh = Nothing
プリンター一覧を取得するため、Shell.NameSpaceを使います。
Shell.NameSpace method (Windows)
ssfPRINTERSの値4はShellSpecialFolderConstantsを参照しました。
ShellSpecialFolderConstants enumeration