hiko-blog

VBA業務改善

MENU

ExcelシートをPDF保存

Sub PDF保存()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim filePath As String
    Dim printRange As Range
    Dim currentDate As String
    
    ' アクティブシートを設定
    Set ws = ActiveSheet
    
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 印刷範囲をA列からG列まで設定
    Set printRange = ws.Range("A1:G" & lastRow)
    ws.PageSetup.PrintArea = printRange.Address
    
    ' 作成日をyyyymmdd形式で取得
    currentDate = Format(Date, "yyyymmdd")
    
    ' 保存先のパスを指定(ファイル名に作成日を追加)
    filePath = "C:\path\to\your\directory\" & ws.Name & "_" & currentDate & ".pdf"
    
    ' 印刷範囲をPDFとして保存
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    
    ' メッセージ表示
    MsgBox "PDFファイルが保存されました: " & filePath
End Sub

 

Sub PDFは任意に名前を付けて保存()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim filePath As String
    Dim printRange As Range
    Dim currentDate As String
    Dim customFileName As String
    
    ' アクティブシートを設定
    Set ws = ActiveSheet
    
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 印刷範囲をA列からG列まで設定
    Set printRange = ws.Range("A1:G" & lastRow)
    ws.PageSetup.PrintArea = printRange.Address
    
    ' 作成日をyyyymmdd形式で取得
    currentDate = Format(Date, "yyyymmdd")
    
    ' 任意のファイル名を入力
    customFileName = InputBox("保存するファイル名を入力してください(拡張子は不要):")
    
    ' 保存先のパスを指定(ファイル名に作成日を追加)
    filePath = "C:\path\to\your\directory\" & customFileName & "_" & currentDate & ".pdf"
    
    ' 印刷範囲をPDFとして保存
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    
    ' メッセージ表示
    MsgBox "PDFファイルが保存されました: " & filePath
End Sub