VBAでプリンターに印刷する方法は、印刷する内容によって異なります。以下では、ExcelやWordの印刷、ファイルの直接印刷、テキストをプリンターに送るなど、代表的な方法をまとめて紹介します。

✅ 方法1:Excelシートを印刷(最も基本)
Sub Excelシートを印刷()
ThisWorkbook.Sheets("Sheet1").PrintOut
End Sub
▷ オプション付き例
Sub シートを設定して印刷()
With ThisWorkbook.Sheets("Sheet1")
.PageSetup.Orientation = xlPortrait ' 縦方向
.PrintOut From:=1, To:=1, Copies:=1, Collate:=True, Preview:=False
End With
End Sub
✅ 方法2:指定プリンターで印刷
vbコピーする編集するSub 指定プリンターで印刷()
Dim oldPrinter As String
oldPrinter = Application.ActivePrinter
' プリンター名はコントロールパネルなどで確認(正確に)
Application.ActivePrinter = "Microsoft Print to PDF on Ne01:"
' 印刷
ThisWorkbook.Sheets("Sheet1").PrintOut
' 元のプリンターに戻す
Application.ActivePrinter = oldPrinter
End Sub
📝 プリンター名の調べ方:
Sub プリンター名を表示()
MsgBox Application.ActivePrinter
End Sub
✅ 方法3:Word文書を印刷(VBAからWordを操作)
Sub Wordファイルを印刷()
Dim wdApp As Object
Dim wdDoc As Object
Set wdApp = CreateObject("Word.Application")
Set wdDoc = wdApp.Documents.Open("C:\パス\sample.docx")
wdDoc.PrintOut
wdDoc.Close False
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
✅ 方法4:ファイル(PDFやTXTなど)を既定のプリンタで直接印刷
Sub ファイルを印刷_既定アプリ使用()
Dim filePath As String
filePath = "C:\パス\sample.pdf"
Shell "cmd /c start /min /wait " & Chr(34) & filePath & Chr(34), vbHide
End Sub
この方法は、**既定アプリ(PDFならAdobe Readerなど)**が「印刷」をサポートしている必要があります。
✅ 方法5:テキストを直接プリンタに送る(高度)
プリンタにテキストを直接送るにはAPIやWindowsコマンドを使う必要があり、VBA単体では複雑になります。通常はWordやExcelに出力してから印刷するのが現実的です。
✅ 印刷範囲を指定するには?
Sub 範囲指定で印刷()
Worksheets("Sheet1").Range("A1:D20").PrintOut
End Sub
✅ 印刷前にプレビュー表示
Sub 印刷プレビューを表示()
ThisWorkbook.Sheets("Sheet1").PrintPreview
End Sub