dポイントプレゼントキャンペーン実施中!

サーバーに置いてある、ひとつのExcelシートをマクロを使用して印刷時のプリンターや範囲指定をしたかったのですが、各端末でアクティブプリンターの名称(ポート名)が異なっており、うまくいきません。

具体的には「プリンター名 on ポート名" の「ポート名」の部分が端末ごとで異なっています。

なに良い解決策があれば、教えてください。


※現在の状況
プリンター:同一のものが2台。LAN上で特定の固定IPを使用。
端末:複数台とも全てWinXP/Excel2003。LAN上でDHCPにて、サーバーより動的IPを使取得。

A 回答 (2件)

#1 さんの Printer型は、Excelにはないはずですね。


>Dim p As Printer

API の EnumPrintersで、取ればよいと思います。
他人のコードを丸写しをしたくないので、Google で検索してみてください。
私も作ったことがありますが、時々、他人のコードがOS依存で違う場合がありますので、十分に注意してください。
    • good
    • 1
この回答へのお礼

ありがとうございます。

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

早急な回答、感謝します。

お礼日時:2005/05/13 11:53

ヒント



Private Sub Form_Click()
Dim p As Printer
For Each p In Printers
Debug.Print p.DeviceName
Next
End Sub
    • good
    • 0
この回答へのお礼

早急な対応ありがとうございます。

マクロ等の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

お礼日時:2005/05/13 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています