首页 > 解决方案 > excel vba导出表上的类型不匹配到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

标签: excelvbatype-mismatch

解决方案


推荐阅读