2022年6月21日火曜日

毎日、決まったタイミングで発生して、定常的に繰り返し印刷するから、手数の少ない安定したプリンターはゼッタイ ー Application.ActivePrinter(VBA)

      
今、取り組み中のマクロは、エクセルからタックシールに印刷するソフトです。
もちろん、印字はプリンター接続が肝心で、しかもタックシールが手差しです。

まあ、通常のマニュアルでは印刷前にプリンタ―の詳細設定を普通に致します。
エクセルの印刷設定から、プリンタのプロパティを選んで手差しトレイの指定。

ですが、今回の改善では、シート上の印刷ボタンを押すことで自動印刷したい。
そう思って、手差しトレイを設定するコードを探しましたが、見つかりません。

ただ、ワードのVBAマクロには、手差しの”wdPrinterManualFeed ”があった。
なので、この定数を用いて、エクセルに組み込めるかどうか研究しまくります。

でも、結果は無駄なあがきに近く、できないものはできないと諦めて方針転換。
次のコード①から手差し手動を指定して、後は自動のプリンター接続が難しい。

Sub ManualFeed() ’コード①
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub

Sub PrintOut() ’コード②
ActiveSheet.PrintOut From:=1, To:=1, ActivePrinter:="FX DocuCentre- C5571(33.51)"
End Sub

    
実は、上記のコード②で印刷を指定すると、既定のトレイから印刷してしまう。
なので、当初はブックをプリンターの手差しで指定してから保存してみました。

これで、次に開くとプリンター設定の機能が活かされていると思っていた分け。
ところが、それがそうでもなくて、設定が不安定の様な気もして断念しました。

こうなると、設定が分からず遠ざけていた、ポート番号付きのプリンタ設定だ。
どうポート番号を見つけるのか、ネットで探すと何やらゴニョゴニョのコード。

どうしても、キモの部分だけのコードが欲しかったので、簡略化してみました。
このコード③で、設定済みのプリンター情報がポート番号付きで取得できます。

Private Sub PRT_NameWithPortNo() ’コード③
  Debug.Print "Workbook_Open:" & Application.ActivePrinter
End Sub 'ポート番号まで表示

Sub ActvPrntrSet() ’コード④
 Application.ActivePrinter = "\\SVR-hoge-999.hogehogedomain.local\YK_CANON LBP8610(99.99) on Ne19:"
End Sub

まあ、コード④でプリンター設定ができるから、ブックの立ち上げ時に仕込む。
それから、コード①を走らせて、マニュアル操作で手差しトレイを設定しよう。

というわけで、ポート番号を探り出すのが、難しくはなかったという次第です。
ただ、設定の記述で、ポート番号の後ろにコロン(:)を付けなければならないのがなんとも不思議で、しかも、このポート番号は一度設定すれば変えない限り固定らしいいので、このままコードを組むことにした自分なのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿