objWorkbook.ExportAsFixedFormat _ Type:=0, _ filename:=strPDFPath & objFile.Name & ".pdf", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False无效的调用过程货参数
时间: 2024-03-27 10:36:23 浏览: 121
如果您仍然遇到“无效的调用过程或参数”错误,可能是因为您的 Excel 库版本不支持 ExportAsFixedFormat 方法。在这种情况下,您可以尝试使用 Microsoft Print to PDF 打印机来将 Excel 文件转换为 PDF 文件。以下是示例代码:
```vb
Sub BatchConvertExcelToPDF()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim objExcel As Object
Dim objWorkbook As Object
Dim objPDFPrinter As Object
Dim strFolderPath As String
Dim strPDFPath As String
Dim intCounter As Integer
' 设置文件夹路径和PDF输出路径
strFolderPath = Environ("UserProfile") & "\Desktop\1\"
strPDFPath = Environ("UserProfile") & "\Desktop\PDF\"
' 创建文件系统对象
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 获取文件夹对象
Set objFolder = objFSO.GetFolder(strFolderPath)
' 创建Excel对象
Set objExcel = CreateObject("Excel.Application")
' 创建PDF打印机对象
Set objPDFPrinter = CreateObject("WScript.Network").SetDefaultPrinter("Microsoft Print to PDF")
' 遍历文件夹中的所有Excel文件
For Each objFile In objFolder.Files
' 检查文件扩展名是否为.xlsx或.xls
If Right(objFile.Path, 5) = ".xlsx" Or Right(objFile.Path, 4) = ".xls" Then
' 打开工作簿
Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
' 更新标签控件的显示,并执行PDF转换
frmProgress.lblFileName.Caption = "正在处理:" & objFile.Name
DoEvents
intCounter = intCounter + 1
objWorkbook.PrintOut Copies:=1, ActivePrinter:="Microsoft Print to PDF", PrintToFile:= _
True, PrToFileName:=strPDFPath & objFile.Name & ".pdf"
' 关闭工作簿
objWorkbook.Close False
End If
Next objFile
' 释放Excel对象
objExcel.Quit
Set objExcel = Nothing
' 移除PDF打印机对象
Set objPDFPrinter = Nothing
' 显示转换完成的消息
MsgBox "已完成 " & intCounter & " 个文件的转换。"
End Sub
```
以上代码中,我们使用 PrintOut 方法将 Excel 文件打印到 Microsoft Print to PDF 打印机,然后使用 PrToFileName 参数将打印输出保存为 PDF 文件。在此过程中,我们没有使用 ExportAsFixedFormat 方法,因此不需要处理可能导致“无效的调用过程或参数”错误的问题。请注意,您需要将代码中的文件夹路径和 PDF 输出路径修改为您实际使用的路径。同时,需要在用户窗体中添加一个名为 lblFileName 的标签控件。
阅读全文