管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

ExcelファイルをPDF化する(ExcelVBA編)

Excel2007以降なら、VBAでPDF化できるようですね。
そんなわけで書いてみました。変換元Excelファイルと同じ場所にPDFが格納されます。
表示されたシート、印刷範囲が適用され、全シートが1PDFファイルになります。
https://msdn.microsoft.com/ja-jp/library/office/ff198122.aspx

Sub ボタン1_Click()
    Dim fileNames As Variant
    Dim fileName As Variant
    Dim idx As Integer
    Dim FSO As Object
    Dim extensionName As String
    Dim PDFFileName As String
    
    fileNames = Application.GetOpenFilename(MultiSelect:=True)
    
    If IsArray(fileNames) Then
        Set FSO = CreateObject("Scripting.FileSystemObject")
        idx = 0
    
        For Each fileName In fileNames
            extensionName = FSO.GetExtensionName(fileName)
            ' 元のファイル名.pdfを生成(.xls(x)は除く)
            PDFFileName = Left(fileName, Len(fileName) - (Len(extensionName))) & "pdf"
            Debug.Print PDFFileName
        
            Workbooks.Open fileName
            ’ 全ページをPDF可する
            ’ 印刷範囲を加味する
            ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:="", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
            ActiveWorkbook.Close
            
            idx = idx + 1
        Next fileName
        
        MsgBox "変換完了(" & idx & "件)"
        
        Set FSO = Nothing
    Else
        Exit Sub
    End If
End Sub