Registered 2022.09.09 Update 2023.05.21 技術習得:業務系アプリQ&A,独自開発
Registered 2022.09.09 Update 2023.05.21 技術習得:業務系アプリQ&A,独自開発
パソコンにプリンタをインストールすると、インストール順に番号が振られます。それが「NeXX」です。
XXに当たる箇所はWindowsのレジストリで確認できます。
Sub sample()
MsgBox Application.ActivePrinter
End Sub
Sub printSample()
Application.ActivePrinter = "プリンター名 on Ne01:"
Worksheets(1).PrintOut
End Sub
同じExcelVBAを使い同じプリンタから出力する場合、全パソコンにインストール済みプリンタのNe値が同一でないと意味がありません。
これが面倒なので私は別の手段を使っています。
プリンタドライバのインストール時にプリンタ名を任意で設定できるため、システム担当が設定しておけば、VBAの記述が楽になります。
以下は現在のアクティブプリンタ名を変数に置き換え、プリンタ名「複合機」から印刷、その後にアクティブプリンタ名に戻す方法です。
Sub printSample()
Dim aPrinter As String
'現在アクティブなプリンタ名を記憶
aPrinter = Application.ActivePrinter
'プリンタ名「複合機」からアクティブシートのセル範囲A1:D10を印刷
Application.ActiveSheet.Range("A1:D10").PrintOut ActivePrinter:=" 複合機"
'印刷後に元のプリンタ名に戻す
Application.ActivePrinter = aPrinter
MsgBox ("印刷しました")
End Sub
ユーザーがプリンタ名を勝手に変更すると動作しません。
ただし、これができる知識と技能を持つユーザーなら、会社支給端末の設定を勝手に変更する愚行は侵さないので、大丈夫かな、と思います。
個人的に「プリンタ名を直接VBA内に書いて出力する」方法がおすすめです。
全ての端末で同じ条件でないと動かせないシステムは作りたくありません。