使用VBA导出多工作表为PDF时出现“下标越界”错误的解决求助
修复VBA导出PDF时的“下标越界”错误
出现“下标越界”错误的核心原因是代码中指定的工作表在当前工作簿中无法被定位,以下是具体修复方案:
- 核对工作表名称:确认当前工作簿中确实存在
Sheet16和Sheet10这两个工作表,检查名称的拼写、大小写、空格是否完全匹配(比如不要把Sheet16误写为Sheet 16)。 - 排查工作表状态:如果目标工作表是非常隐藏状态(通过VBA设置
Visible = xlSheetVeryHidden),会导致无法被索引到,需要先将其设为可见:ThisWorkbook.Worksheets("Sheet16").Visible = xlSheetVisible ThisWorkbook.Worksheets("Sheet10").Visible = xlSheetVisible - 替换为工作表索引(可选):如果名称容易出错,可以改用工作表的位置索引(从左到右第一个工作表索引为1),示例代码:
Sub Print_Int() ThisWorkbook.Worksheets(Array(16, 10)).ExportAsFixedFormat Type:=xlTypePDF End Sub - 增加存在性验证(推荐):为了避免因工作表缺失导致报错,可以在代码中先验证工作表是否存在,再执行导出:
Sub Print_Int() Dim targetNames As Variant Dim validSheets As Collection Dim ws As Worksheet Dim wsArray() As Worksheet Dim i As Integer targetNames = Array("Sheet16", "Sheet10") Set validSheets = New Collection ' 筛选存在的工作表 On Error Resume Next For Each name In targetNames Set ws = ThisWorkbook.Worksheets(name) If Err.Number = 0 Then validSheets.Add ws Else MsgBox "工作表 '" & name & "' 不存在,请检查。" End If Err.Clear Next name On Error GoTo 0 ' 导出有效工作表 If validSheets.Count > 0 Then ReDim wsArray(1 To validSheets.Count) For i = 1 To validSheets.Count Set wsArray(i) = validSheets(i) Next i ThisWorkbook.Worksheets(wsArray).ExportAsFixedFormat Type:=xlTypePDF End If End Sub
内容的提问来源于stack exchange,提问作者Juli44
相关产品推荐
相关产品推荐

