VBA 印刷

未分類

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
タイトルとURLをコピーしました