前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA: Excel文件批量转化为pdf

VBA: Excel文件批量转化为pdf

作者头像
Exploring
发布2022-09-20 14:33:57
2.9K0
发布2022-09-20 14:33:57
举报

文章背景:测试仪器的数据有些会以Excel文件的形式保存,有时需要将测试数据转化为pdf格式。通过虚拟打印机(Adobe PDF)可以将excel文件输出为pdf文件。然而,当文件比较多时,这种操作比较费时。现在以批量转化Excel文件(.xlsx格式)为例,采用VBA编程,进行任务的实现。

批量转化文件的按钮中指定的宏命令为ConvertFiles。

在模块中添加的代码如下:

代码语言:javascript
复制
Option Explicit

Sub ConvertFiles()

    '批量转化Excel文件为pdf
    Dim filefolder As String
    
    Dim fd As FileDialog, t As String, str As String, name As String
    
    Application.ScreenUpdating = False
    
    '获取默认路径
    ChDrive ThisWorkbook.Worksheets("Sheet1").Range("B2").Value
    ChDir ThisWorkbook.Worksheets("Sheet1").Range("B3").Value
    
    '1 创建储存pdf文件的空文件夹
    filefolder = ThisWorkbook.Worksheets("Sheet1").Range("B3").Value & "\pdf文件"
    
    If Not isDirectory(filefolder) Then
    
        VBA.MkDir (filefolder)
        
    Else
    
        MsgBox "默认路径的pdf文件夹已存在,请确认!"
        
        Exit Sub
    
    End If
    
    '2 选择需要转化的文件夹路径
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    
    With fd
    
        If .Show = -1 Then
        
            t = .SelectedItems(1)
            
        Else
        
            MsgBox "未选取文件夹!"
            
            Exit Sub
            
        End If
    
    End With
    
    str = Dir(t & "\*.xlsx")   ' 开始查找文件,格式为xlsx文件
    Do While Len(str) > 0
    
        Workbooks.Open (t & "\" & str)
        
        name = CreateObject("Scripting.FileSystemobject").getextensionname(str)  '获取文件的扩展名
        
        ActiveWorkbook.Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=filefolder & "\" & Replace(str, name, "pdf"), Quality:=xlQualityStandard, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
            
        Workbooks(str).Close False
        
        str = Dir()
        
    Loop
    
    MsgBox "Done!"
    
    Application.ScreenUpdating = False
    
    Exit Sub

End Sub

Function isDirectory(pathName As String) As Boolean

    '用于判断文件夹是否存在
    
    Dim fso As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    isDirectory = fso.FolderExists(pathName)

End Function

运行效果展示

运行前:

运行后:

参考资料:

[1] VBA批量转化Excel文件为PDF(http://www.360doc.com/content/17/0909/07/30583536_685669139.shtml

[2] 批量将Excel转化为PDF(https://blog.csdn.net/sinat_39901027/article/details/109412016

[3] Workbook.ExportAsFixedFormat method (Excel)(https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.exportasfixedformat

本文参与?腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com