• ベストアンサー

エクセルVBAでのネットワークプリンタのポー名の取得方法は?

サーバーに置いてある、ひとつのExcelシートをマクロを使用して印刷時のプリンターや範囲指定をしたかったのですが、各端末でアクティブプリンターの名称(ポート名)が異なっており、うまくいきません。 具体的には「プリンター名 on ポート名" の「ポート名」の部分が端末ごとで異なっています。 なに良い解決策があれば、教えてください。 ※現在の状況 プリンター:同一のものが2台。LAN上で特定の固定IPを使用。 端末:複数台とも全てWinXP/Excel2003。LAN上でDHCPにて、サーバーより動的IPを使取得。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1 さんの Printer型は、Excelにはないはずですね。 >Dim p As Printer API の EnumPrintersで、取ればよいと思います。 他人のコードを丸写しをしたくないので、Google で検索してみてください。 私も作ったことがありますが、時々、他人のコードがOS依存で違う場合がありますので、十分に注意してください。

noname#160862
質問者

お礼

ありがとうございます。 早速、調べてみると似たよう状況の方が多く、とても参考になりました。 これで再度チャレンジしてみます。 早急な回答、感謝します。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

ヒント Private Sub Form_Click() Dim p As Printer For Each p In Printers Debug.Print p.DeviceName Next End Sub

noname#160862
質問者

お礼

早急な対応ありがとうございます。 マクロ等のVBAについては、限りなく素人に近いため回答の構文が良く理解できません。(スミマセン) 実際に特定の端末1台で使えたもを記述しておきます。 これがLAN上の他の端末では、プリンター名の「on」以下が端末ごとで違います。 何か良い方法があれば伝授してください。 よろしくお願いします。 Private Sub CommandButton1_Click() Range("A1:BF55").Select ActiveSheet.PageSetup.PrintArea = "$A$1:$BF$55" Application.ActivePrinter = "LBP1450-A on Ne00:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "LBP1420-A on Ne00:", Collate:=True Range("A56:BF82").Select ActiveSheet.PageSetup.PrintArea = "$A$56:$BF$82" Application.ActivePrinter = "LBP1420-B on Ne02:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "LBP1420-B on Ne02:", Collate:=True End Sub

関連するQ&A