Vba 将多张图纸导出为PDF

Vba 将多张图纸导出为PDF,vba,excel,Vba,Excel,我想将表格“验证”和“设计概述”导出为单个PDF。在最远处,可以看到整个代码 使用时 Set wsA = ActiveSheet 代码运行良好。但是,当我将该定义更改为 Set wsA = Sheets(Array("Verification", "Design Overview")).Select 这段代码涉及到错误处理 多页选择是否与strName冲突,或者代码哪里出错 此外,我想取消选择多个工作表,仅在导出后选择activesheet Sub Export() Dim wsA As

我想将表格“验证”和“设计概述”导出为单个PDF。在最远处,可以看到整个代码

使用时

Set wsA = ActiveSheet
代码运行良好。但是,当我将该定义更改为

Set wsA = Sheets(Array("Verification", "Design Overview")).Select
这段代码涉及到错误处理

多页选择是否与
strName
冲突,或者代码哪里出错

此外,我想取消选择多个工作表,仅在导出后选择activesheet

Sub Export()

Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler

Set wbA = ActiveWorkbook
'Set wsA = ActiveSheet
Set wsA = Sheets(Array("Verification", "Design Overview")).Select
strTime = Format(Now(), "yyyymmdd\_hhmm")


'Get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'Replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'Create default name for savng file
strFile = "Example"
strPathFile = strPath & strFile

'User can enter name and select folder for the file
myFile = Application.GetSaveAsFilename _
(InitialFileName:=strPathFile, _
    FileFilter:="PDF (*.pdf), *.pdf", _
    Title:="Select folder and filename to save")

'Export to PDF if a folder is selected
If myFile <> "False" Then
wsA.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=myFile, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
'Confirmation message with file info
'MsgBox "File has been created: " _
  '& vbCrLf _
  '& myFile
 End If

exitHandler:
Exit Sub
errHandler:
MsgBox "Could not export file", vbCritical, "Export"
Resume exitHandler

ThisWorkbook.Sheets("Design Overview").Select

End Sub
子导出()
将wsA设置为工作表
将wbA设置为工作簿
作为字符串的Dim strTime
将strName设置为字符串
将strPath设置为字符串
作为字符串的Dim strFile
将strPathFile设置为字符串
Dim myFile作为变量
关于错误转到错误处理程序
设置wbA=ActiveWorkbook
'设置wsA=ActiveSheet
设置wsA=图纸(阵列(“验证”、“设计概述”))。选择
strTime=格式(现在(),“yyyymmdd\ \u hhmm”)
'获取活动工作簿文件夹(如果已保存)
strPath=wbA.Path
如果strPath=“”,则
strPath=Application.DefaultFilePath
如果结束
strPath=strPath&“\”
'替换图纸名称中的空格和句点
strName=Replace(wsA.Name,“,”)
strName=Replace(strName,“.”,“”)
'为savng文件创建默认名称
strFile=“示例”
strPathFile=strPath&strFile
'用户可以输入名称并选择文件的文件夹
myFile=Application.GetSaveAsFilename_
(InitialFileName:=strPathFile_
FileFilter:=“PDF(*.PDF),*.PDF”_
标题:=“选择要保存的文件夹和文件名”)
'如果选择了文件夹,则导出为PDF
如果myFile为“False”,则
wsA.ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=myFile_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=True
'带有文件信息的确认消息
已创建“MsgBox”文件:_
'&vbCrLf_
“&myFile”
如果结束
出口商:
出口接头
错误处理程序:
MsgBox“无法导出文件”,vbCritical,“导出”
复出机
此工作簿。工作表(“设计概述”)。选择
端接头

提前谢谢

如果要基于变量选择图纸,这是一种很好的方法:

Dim mySh As Sheets
Set mySh = Worksheets(Array(Worksheets(1).Name, Worksheets(2).Name))
mySh.Select

但是,正如评论中所提到的,您可以引用它们,将它们合并到集合中,并使用它们执行您需要的任何操作:

Sub TestMe()

    Dim myWs As Worksheet
    Dim wsCol As New Collection

    wsCol.Add Worksheets(1)
    wsCol.Add Worksheets(2)

    For Each myWs In wsCol
        myWs.Cells(1, 1) = "TEST"
    Next myWs

    Dim mySh As Sheets
    Set mySh = Worksheets(Array(Worksheets(1).Name, Worksheets(2).Name))
    mySh.Select

End Sub

因此,您可以得到两个好处-执行速度和更好地控制代码(从而减少错误)。

应该是
Set wsA=Sheets(数组(“验证”、“设计概述”)
而不使用
。选择
。在大多数情况下,无需选择任何内容:。由于wsA声明为
工作表
,这是一个工作表,因此无法将其设置为多个工作表(数组)。
如果要将其设置为多个工作表,请将wsA设置为工作表
。另外,如果您从未在任何地方使用过该变量,为什么要将其替换为
strName
?你想在这里干什么
myFile“False”
应该是
myFile False
•您计划将多张工作表导出到一个PDF还是将多张工作表导出到多个PDF(不太清楚)。•另外,
strTime
从未在任何地方使用过。我正在尝试将多张工作表导出到一个PDF中。如果我
将wsA设置为图纸
并删除
。选择
,同时删除
strTime
strName
,它仍然不会运行。它似乎不喜欢这一部分:
wsA.ExportAsFixedFormat
就好像它不能与多个工作表一起运行一样。谢谢你的帮助!你犯了什么错误
ExportAsFixedFormat
应能处理多个工作表。使用
wsA.Select:ActiveSheet.ExportAsFixedFormat
应能工作