excel vba将工作表导出为pdf时的类型不匹配

excel vba将工作表导出为pdf时的类型不匹配,excel,vba,type-mismatch,Excel,Vba,Type Mismatch,当选择多个excel工作表(在一个数组中)以导出为单个pdf时,会出现类型不匹配错误 我想将单个excel工作簿中的多张工作表导出为单个pdf以供审阅和打印。我可以导出单个表单,每个表单都有自己的pdf格式。为了处理多个不同的工作表,我尝试设置一个动态数组,以导出数组中的工作表。定义阵列后,将选择图纸(阵列),此时会发生类型不匹配错误。下面的代码改编自我在网上找到的一个示例。此外,我还尝试查看数组的内容,而不是选择/导出为pdf。此代码也会出现类型不匹配。此代码显示在下面的“@@@@行下面 我已

当选择多个excel工作表(在一个数组中)以导出为单个pdf时,会出现类型不匹配错误

我想将单个excel工作簿中的多张工作表导出为单个pdf以供审阅和打印。我可以导出单个表单,每个表单都有自己的pdf格式。为了处理多个不同的工作表,我尝试设置一个动态数组,以导出数组中的工作表。定义阵列后,将选择图纸(阵列),此时会发生类型不匹配错误。下面的代码改编自我在网上找到的一个示例。此外,我还尝试查看数组的内容,而不是选择/导出为pdf。此代码也会出现类型不匹配。此代码显示在下面的“@@@@行下面

我已经阅读了3或4篇关于VBA将多张图纸导出为pdf以及关于类型不匹配的文章,但无法确定任何适用的解决方案(但也无法理解我所阅读的内容)

此外,“ThisWorkbook.Sheets”代码在我所看到的所有示例中都显示为大写字母“S”。每次我尝试将“S”大写时,它都会自动恢复为小写的“S”

非常感谢您的帮助;多谢各位

Option Explicit

LastRowRoutes = VV  'LastRowRoutes & VV are Variant
Dim M As Variant
Dim arr() As Variant
Dim cnt As Variant
Dim strFilename As String, strFilepath As String
Dim wksSheet1 As Worksheet
Dim printSheets As Variant
printSheets = arr
Set wksSheet1 = ThisWorkbook.sheets("Sheet1")
Set wksSheet1 = Worksheets("Sheet1")
strFilepath = "E:\"
With wksSheet1
   strFilename = strFilepath & "TripSheets_Print.pdf"
End With
cnt = 0
For M = 22 To LastRowRoutes
    If Worksheets(M).Range("B4").Value <> "" Then
        ReDim Preserve arr(0 To cnt)
        arr(cnt) = Worksheets(M).Range("A1:K43")
        cnt = cnt + 1
    Else
    End If
Next
ThisWorkbook.sheets(printSheets).Select  '*Type Mismatch here
wksSheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilename, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
'@@@@@@@@ code below to view array contents in lieu of select & export
For M = LBound(arr) To UBound(arr) 'type mismatch here as well
    msg = msg & arr(M) & vbNewLine
Next M
MsgBox "the values of my array are: " & vbNewLine & msg
选项显式
LastRowRoutes=VV’LastRowRoutes&VV是变量
Dim作为变体
Dim arr()作为变量
作为变体的Dim-cnt
将strFilename设置为字符串,将strFilepath设置为字符串
将工作表1设置为工作表
变暗打印纸作为变型
打印纸=arr
设置wksSheet1=此工作簿.sheets(“Sheet1”)
设置工作表1=工作表(“表1”)
strFilepath=“E:\”
带WKSheet1
strFilename=strFilepath&“TripSheets\u Print.pdf”
以
cnt=0
对于M=22至最后一行路线
如果工作表(M).范围(“B4”).值为“”,则
ReDim保留arr(0到cnt)
arr(cnt)=工作表(M).范围(“A1:K43”)
cnt=cnt+1
其他的
如果结束
下一个
ThisWorkbook.sheets(printSheets)。在此处选择“*类型不匹配”
wksSheet1.ExportAsFixedFormat类型:=xlTypePDF,文件名:=strFilename,质量:=xlQualityStandard_
IncludeDocProperties:=真,IgnorePrintAreas:=假,OpenAfterPublish:=真
“@@@@@@@代码,用于查看数组内容而不是选择和导出
对于M=LBound(arr)到UBound(arr),此处的类型也不匹配
msg=msg&arr(M)&vbNewLine
下一个M
MsgBox“我的数组的值是:”&vbNewLine&msg

您试图将数组用作单个工作表?也许你的意思是做这个工作簿。工作表(打印表(0))…?另外,据我所知,
arr
printSheets
都是空的…添加
printSheets=arr
arr
循环中为M更新
后。
printSheets(?)
修复
表单中的小写
s
-添加一个新变量-
Dim sheets
,然后删除它。@BruceWayne
arr
的每个元素都是一个数组:
arr(cnt)=工作表(M).Range(“A1:K43”)
@BruceWayne我同意这个问题,只是
arr
也有问题……你想把一个数组用作一个工作表?也许你的意思是做这个工作簿。工作表(打印表(0))…
?另外,据我所知,
arr
printSheets
都是空的…添加
printSheets=arr
arr
循环中为M
更新
后。
printSheets(?)
修复
表单中的小写
s
-添加一个新变量-
Dim sheets
,然后删除它。@BruceWayne
arr
的每个元素都是一个数组:
arr(cnt)=工作表(M).Range(“A1:K43”)
@BruceWayne我同意这个问题,只是
arr
也有问题。。。