饂飩コーディング

iOSアプリやら、Unityやら、Cocos2dやらごにょごにょ書いております

VBAでリストにプリンター一覧を追加し、選択したプリンタでPDFを印刷する。

サイトが引っ越しました。→https://scombu.com

約1秒後に自動的にリダイレクトします。切り替わらない場合はリンクをクリックしてください。

以下の感じでリストにアイテムを追加する。

Private Sub Form_Load()
'フォーム読み込み時
  Dim prt As Printer
  'すべてのプリンタを列挙してコンボボックスの値集合ソースに追加
  For Each prt In Application.Printers
    Me.リスト10.AddItem prt.DeviceName
  Next prt
End Sub

ボタンが押されたら、PDFの印刷をするのですが、
ここでどのプリンタを選択するかは上記でセットしたリストの値に置き換えています。

Private Sub コマンド12_Click()
    '[印刷]ボタンクリック時

  'プリンタ変数を宣言
  Dim prtDefault As Printer
  '現在のプリンタ設定を退避
  Set prtDefault = Application.Printer 'これがデフォルトプリンタ
  '選択されたプリンタの情報を設定
  Set Application.Printer = Application.Printers(Me.リスト10.Value)
  
  '印刷するぞ
  
  'シェルオブジェクトの作成
    Dim shellObj As Object
    Set shellObj = CreateObject("WScript.shell")
    
    Dim exeStm As String
    
    'コマンドラインの文字列を作成する
        exeStm = "AcroRd32.exe /t" & " " & "C:\Users\XXXXX\Desktop\test.pdf" & " " & Application.Printer.DeviceName
        shellObj.Run (exeStm)   '印刷する
  
  'プリンタ設定を元に戻す
  Set Application.Printer = prtDefault

 Set prtDefault = Nothing
End Sub

excelファイルの印刷時にプリンタを指定するならば、以下の感じで!

myExcel.ActiveWorkbook.PrintOut ActivePrinter:=Me.リスト10