--教育不是灌输,而是点燃火焰,学习编程成就更好的自己--

微软公司Office软件在商业办公领域一直占据着主流和主导地位,其中Excel在数据处理和分析领域有着强大的影响力,大部分人在经历几年职场历练后可以熟练的使用Excel函数透视表功能,基本可以轻松完成绝大多数工作和任务。但实际上Office的强大和独特之处还在于VBA,因为VBA能够胜任好多个性化二次开发,减少重复机械劳动从而实现办公自动化,开发效率高且开发周期短,尤其对于Excel重度使用者来说会了VBA简直就是如虎添翼啊!!!(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学VBA遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

使用Excel过程中有时需要把处理好的数据结果另存为PDF文件,然后发送给相关客户或者同事,而且有时需要把多个Sheet数据都要转换为PDF格式文件,如何通过VBA来实现批量转换指定数据为PDF格式文件并保存呢?接下来通过一个实际案例来展示:

截图1:

截图2:

截图3:

其他截图省略

如上所示:

某EXCEL文件中有多个Sheet数据,需要找到Sheet名字前三个字符为"PDF"且后面接一位数字字符的所有Sheet(即是:PDF1,PDF2,PDF3和PDF4),将其数据内容转换成为PDF格式文件保存起来,对应的文件名就是抬头名称,如“西北区域-产品销售情况”。

如何解决这个问题呢?首先看看VBA如何把Excel数据另存为PDF文件:

运行代码后的效果如下:

核心代码是:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "" & Sheets("PDF").Range("B3") & ".pdf" '核心代码

有了解决问题的核心代码就好办了,接下来可以考虑把这个代码封装成一个自定义函数,方便在遍历循环所有Sheet时方便判断和调用,如下:

Function SaveAsPDF(X) '把Excel的Sheet数据另存为PDF格式文件,写成自定义函数方便后续调用 Application.ScreenUpdating = False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "" & Sheets(X).Range("B3") & ".pdf" Application.ScreenUpdating = True End Function

下面直接搞定这个问题吧,如下:

运行后的结果如下:

怎么样!VBA是不是很给力!!!

代码汇总如下:

Sub SaveExcelAsPDF() '把Excel的Sheet数据另存为PDF格式文件 Application.ScreenUpdating = False Sheets("PDF").Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "" & Sheets("PDF").Range("B3") & ".pdf" '核心代码 Application.ScreenUpdating = True End Sub Function SaveAsPDF(X) '把Excel的Sheet数据另存为PDF格式文件,写成自定义函数方便后续调用 Application.ScreenUpdating = False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "" & Sheets(X).Range("B3") & ".pdf" Application.ScreenUpdating = True End Function Sub Get_PDF_FM_Excel() '通过循环判断批量生成对应的PDF格式文件 Application.ScreenUpdating = False For Each sht In Worksheets '遍历循环每个Sheets If VBA.Left(sht.Name(), 3) = "PDF" And Len(sht.Name()) = 4 Then '通过判断Sheet名字前三字符为PDF且字符长度为4来选择指定的Sheet Debug.Print sht.Name() SaveAsPDF (sht.Name()) '通过SaveAsPDF自定义函数来实现批量生成PDF格式文件 End If Next Application.ScreenUpdating = True End Sub

通过今天的案例讲解,大家学会后完全可以根据自己的实际需求来调整,这样就能够制作出各种高效的办公自动化神器,例如批量生成发票和单据等小工具,感觉马上飞起来了!!赶紧告别低效地加班和重复劳动吧!!

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!