使用VBA将单元格范围从Excel工作表循环导出到多页PDF

使用VBA将单元格范围从Excel工作表循环导出到多页PDF,vba,excel,pdf,export,Vba,Excel,Pdf,Export,我尝试使用以下方法将某个范围从excel工作表导出到pdf文件: Sub pdfpls() Dim pdfName As String Dim fileSaveName As String pdfName = cb_sn.Value & "_report_" & cb_year.Value & ".pdf" ChDir ThisWorkbook.Path fileSaveName = Application.GetSaveAsFilename(pdfName, _ fi

我尝试使用以下方法将某个范围从excel工作表导出到pdf文件:

Sub pdfpls()
Dim pdfName As String
Dim fileSaveName As String

pdfName = cb_sn.Value & "_report_" & cb_year.Value & ".pdf"
ChDir ThisWorkbook.Path
fileSaveName = Application.GetSaveAsFilename(pdfName, _
fileFilter:="PDF Files (*.pdf), *.pdf")
If fileSaveName <> False Then
Sheet12.Range(Cells(1, 1), Cells(43, 9)).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    fileSaveName _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=False
End If
End Sub  
子pdfpls()
Dim pdfName作为字符串
Dim fileSaveName作为字符串
pdfName=cb_sn.Value&“报告&cb_year.Value&”.pdf”
ChDir ThisWorkbook.Path
fileSaveName=Application.GetSaveAsFilename(pdfName_
fileFilter:=“PDF文件(*.PDF),*.PDF”)
如果fileSaveName为False,则
Sheet12.范围(单元格(1,1),单元格(43,9)).ExportAsFixedFormat类型:=xlTypePDF,文件名:=_
文件名_
,质量:=xlQualityStandard,IncludeDocProperties:=True,忽略打印区域_
:=错误,OpenAfterPublish:=错误
如果结束
端接头
但是,运行此命令会得到一个运行时错误“13”不匹配错误。 理想情况下,我希望有两个按钮,一个只打印一份报告,另一个(代码稍有不同)将多份报告打印到一份pdf中。但是,一份报告都无法运行。仅供参考,cb_sn和cb_year是报告序列号和年份的组合框,如果有必要,我将使用excel 2007。感谢您的帮助!谢谢

卡尔文

编辑:

我还发现了一些其他代码,可以很好地制作单个pdf,但我无法循环代码,以便它为pdf文件中的每个序列号添加一个页面。ie我想要一个100页的pdf,其中每一页都是不同系列的报告。以下是将一次运行保存为pdf的新代码:

Sub print1pdf()

Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(ws.Name, " ", ""), ".", "_") _
        & "_" & Sheet1.cb_sn & "_" _
        & Sheet1.cb_year _
        & ".pdf"
strFile = ThisWorkbook.Path & "\" & strFile

myFile = Application.GetSaveAsFilename _
(InitialFileName:=strFile, _
    fileFilter:="PDF Files (*.pdf), *.pdf", _
    Title:="Select Folder and FileName to save")

If myFile <> "False" Then
ws.Range(Cells(1, 1), Cells(43, 9)).ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=myFile, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

'MsgBox "PDF file has been created."
End If

exitHandler:
Exit Sub
errHandler:
MsgBox "Could not create PDF file"
Resume exitHandler
子打印1PDF()
将ws设置为工作表
将strPath设置为字符串
Dim myFile作为变量
作为字符串的Dim strFile
关于错误转到错误处理程序
设置ws=ActiveSheet
'输入名称并选择文件的文件夹
'在当前工作簿文件夹中启动
strFile=Replace(Replace(ws.Name,“,”),“,”和“”)_
&“&Sheet1.cb\u序列号&”_
&表1.1年_
&“.pdf”
strFile=thishworkbook.Path&“\”strFile
myFile=Application.GetSaveAsFilename_
(InitialFileName:=strFile_
fileFilter:=“PDF文件(*.PDF),*.PDF”_
标题:=“选择要保存的文件夹和文件名”)
如果myFile为“False”,则
范围(单元格(1,1),单元格(43,9)).ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=myFile_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=False
已创建“MsgBox”PDF文件
如果结束
出口商:
出口接头
错误处理程序:
MsgBox“无法创建PDF文件”
复出机

您得到的错误是哪一行?如果错误有一个
Debug
按钮,点击该按钮并报告该行。如果没有,请在第一行添加断点,然后
逐步进入(F8)
代码,直到得到错误。将这些细节编辑到问题中。当你这样做时,什么是
cbu sn
cbu year
?这些定义在哪里?正如我在原始问题中所说的,cb_sn和cb_year是表12中的组合框。我找到了一些其他的代码,可以保存一个pdf页面,但是我无法将多张表单保存到一个pdf文件中。谢谢,我错过了这些。要获取整个
工作簿
do
ActiveWorkbook.ExportAsFixedFormat…
。对于多张工作表(而不是整个工作簿),构建工作表名称数组,并将其输入
工作表(数组(“a”、“b”、“c”))。选择:ActiveSheet.ExportAsFixedFormat
。如果你解决了这个错误,如果你在问题中编辑你的新代码,这将有助于其他人。它适用于单次运行,但不清楚我将如何循环遍历每个序列号并添加页面。我认为这将需要临时工作表,将在最后删除,但这似乎过于复杂,如果有一个更简单的方法。