--教育不是灌输,而是点燃火焰,学习编程成就更好的自己--
微软公司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
我为人人,人人为我!!欢迎大家关注,点赞和转发!!!
~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!