您的位置: 首页 > EXCEL技巧 > ExcelVBA >

用VBA批量转换Excel工作簿为PDF

时间:2013-12-10 整理:docExcel.net

Excel 2010和Excel 2007可以将Excel工作簿另存为PDF格式文件,但手工的方法每次只能转换一个工作簿,要转换多个工作簿就显得有些繁琐。如果没有批量转换软件,在Excel 2010和Excel 2007中,利用VBA代码也可以轻松实现将Excel工作簿批量转换为PDF,方法如下:

1.按Alt+F11,打开VBA编辑器。

2.在右侧代码窗口中输入下列代码:

Sub BatchConvertWorkBookToPDF()
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
Dim wkBook As Workbook
Dim showFolder  As Boolean
showFolder = False
With fDialog
  .Filters.Add "Excel文件", "*.xls; *.xlsx; *.xlsm", 1
  If .Show = -1 Then
   For Each vrtSelectedItem In .SelectedItems
'如果选择了本工作簿则跳过
If InStrRev(vrtSelectedItem, ThisWorkbook.Name) = 0 Then
  On Error Resume Next
  Set wkBook = Application.Workbooks.Open(vrtSelectedItem, ReadOnly:=True, Password:="")
  '跳过设置打开密码的工作簿
  If Not wkBook Is Nothing Then
  '跳过隐藏的工作簿
  If Windows(wkBook.Name).Visible = True Then
  showFolder = True
  '转换开始
  wkBook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  Left(vrtSelectedItem, InStrRev(vrtSelectedItem, ".") - 1) & ".pdf" _
  , Quality:=xlQualityMinimum, IncludeDocProperties:=False, IgnorePrintAreas _
  :=True, OpenAfterPublish:=False
  wkBook.Close , savechanges = False
  Else
  wkBook.Close , savechanges = False
  End If
  End If
   End If
   Next vrtSelectedItem
   If showFolder Then Call Shell("explorer.exe " & Left(fDialog.SelectedItems(1), _
InStrRev(fDialog.SelectedItems(1), "\")), vbMaximizedFocus)
  End If
End With

Set fDialog = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

3.将需要转换的Excel工作簿复制到某个文件夹中。

4.关闭VBA编辑器返回Excel界面。按Alt+F8打开“宏”对话框,执行“BatchConvertWorkBookToPDF”宏。

5.在弹出的“浏览”对话框中选择包含要转换工作簿的文件夹,选择所有要转换的工作簿,单击“打开”按钮即可开始转换。

说明:

1.已转换的PDF文件位于原工作簿所在的文件夹中,转换完成后会自动打开该文件夹。

2.不能转换设置了打开密码的工作簿、隐藏的工作簿、隐藏的工作表和包含上述VBA代码的工作簿。

3.转换的文件类型为“*.xls”、“*.xlsx”、“*.xlsm”。如果要转换其他类型的工作簿,可在代码中添加文件类型。

4.如果要转换的工作簿具有相同的名称和不同的后缀,如“Book1.xls”和“Book1.xlsx”,则先转换的PDF文件会被覆盖。

5.Excel2007必需安装用于 2007 Microsoft Office system 的“另存为 PDF 或 XPS”加载项(见本站《如何将Excel工作簿保存为PDF格式文件》一文)。

单击此处打开xlsm格式源文件下载页面。 

用VBA批量转换Excel工作簿为PDF 问题:用VBA批量转换Excel工作簿为PDF
回答:...将Excel工作簿另存为PDF格式文件,但手工的方法每次只能转换一个工作簿,要转换多个工作簿就显得有些繁琐。如果没有批量转换软件,在Excel 2010和Excel 2007中,利用VBA代码也可以轻松实现将Excel工作簿批量转换为PDF,方法如下:...
如何让Excel大写转换为小写 问题:如何让Excel大写转换为小写
回答:在同一个工作薄中再新建一个空白的工作表,假设原来的工作表为SHEET 1 ,新建的工作表为SHEET 2,在"SHEET2 "A1 的单元格中输入"=UPPER(SHEET1!A1)”,这样就可以将工作表“SHEET1"的单元格内的小写转换
word表格怎么转换成Excel格式 问题:word表格怎么转换成Excel格式
回答:方法很简单: 1、打开Word文档,将Word中需要转换的表格整体选中,复制; 2、打开Excel工作薄,在需要的工作表上,选中放置的单元格,粘贴。 方法2 第一步,在Word中,用“编辑”·“ 替换”命令,将所有单元格中的分段取消。...
如何将Excel转换成CSV,CSV转为Excel方法 问题:如何将Excel转换成CSV,CSV转为Excel方法
回答:...SV格式的文件,今天Excel办公网就来讲解一下如何使用Excel转换成CSV! Excel转CSV方法 其实,在Excel中默认就支持CSV类型格式,所以,我们可以直接另存为来实现转换!详情请看下面! ①首先,在Excel中打开需要转换成CSV的表格...
『Word2007技巧』转换嵌入式 Office Excel 2007 对象 问题:『Word2007技巧』转换嵌入式 Office Excel 2007 对象
回答:... 中创建的。不能在 Word 的早期版本中编辑该对象。 可以转换嵌入对象,以便使用 Word 先前版本的用户可以对其进行编辑。 转换嵌入式 Office Excel 2007 对象 1、右键单击嵌入对象。 2、指向“工作表对象”,然后单击“...
Excel批量转为Html,Html转换成Excel有图有真相 问题:Excel批量转为Html,Html转换成Excel有图有真相
回答: 在工作中时常会遇到转换的问题,比如笔者今天在网站上看到一个不错的表格,但这个表格是网页上面的,该网站又不提供下载,这个时候该如何将这个表格下载下来,并且完整的将其转换Excel中呢?笔者灵机一动想到前几日...
相关知识:

下面内容对您也许有用

      话题:如何用VBA批量提取excel工作表
      问:我有500多张xls工作簿,每个工作簿都有两张工作表,一张名字叫new-finance-data
      答:发原始文件,加Q57321522
      话题:如何用vba将excel工作簿批量重命名
      问:我有一个文件夹,能用vba把这个文件夹里的所有工作簿的命名批量改为该工作簿里第
      答:代码如下:Private Sub mandButton1_Click()Set fso=CreateObject("Scripting.FileSystemObject")Set folder=fso.getfolder("C:\Documents and Settings\
      话题:怎么用VBA将EXCEL转换为PDF
      问:条件:EXCEL2003 网上搜索到的是利用Acrobat Distiller进行转换,这个方法很好,
      答:如果不是为了学习VBA,而仅仅是为了达到Excel转换为PDF的结果,建议是装个软件,像 1、Adobe acrobat pro 8或者以上版本 2、PDF虚拟打印机(例如:PDFfactory Pro 怎样将Excel转化为PDF 如何用VBAexcel文件转为pdf
      话题:在excel中如何使用vba命令实现批量删除指定名称的工作表
      答:按Alt+F11,双击ThisWorkbook,粘贴下面的代码:Sub ouyangff()On Error Resume Next Application.DisplayAlerts=False For i=2 To[g65536].End(3).Row a$=Cells excel批量删除每行数据.(最好 EXCEL VBA查询工作表名称
      话题:Excel工作簿用VBA怎么隐藏工作表?知道
      答:有三种方法:1、直接在Sheet2标签上点右键,弹出的菜单上面有个“隐藏”,点后就可以隐藏它了,想取消隐藏直接在其它工作表标签上点右键—取消,选想取消隐藏的 用VBA或宏,显示和隐藏EXCEL中的 EXCEL隐藏的工作表怎么做超级
      话题:怎样给EXCEL工作表设置注册码输入窗口?用vba代码咋写?
      答:想实现什么功能? 怎样给EXCEL工作表设置注册码 求excel设置工作表密码的vba代码
      话题:有一批EXCEL工作簿,要分别打开再另存为同名的txt,如何用VBA
      答:Sub 批量存TXT()MyPath="D:\My Documents\excel\"'为保存EXCEL的文件夹。myfile=Dir(MyPath&"*.xls")Do While myfile""Workbooks.Open Filename:=MyPath&
      话题:用VBA怎么实现记录下修改excel工作表的内容?及时间?知道
      答:这个可以不用vba.工具共享工作簿允许多用户同时编辑 然后就可以通过修订记录看到每个单元格每次的修改时间,修改人,修改前后的内容. 用VBA怎么实现记录下每次修改 Excel中用VBA编的一段小程序:
      话题:怎样给EXCEL工作表设置注册码输入窗口?用vba代码咋写?保护
      答:保护工作表设置打开密码就行 怎样给EXCEL工作表设置注册码 excel VBA工作表在保存时不弹
      话题:为何用VBA合并EXCEL工作簿,出现空表,谢谢大家!知道
      问:上面图片是我用VBA生成的,红色认定是我要的,SHEET不是我想要的
      答:应该是VBA语句有问题,你最好检查一下语句 求一个VBAEXCEL中,如何将多个 在excel中怎样利用vba合并几个有
最新评论