VBA工作簿对象给出“下标超出范围错误”

时间:2016-09-26 00:13:16

标签: excel vba excel-vba range out

我正在尝试使用下面的代码 PrintWB具有以下值"C:\Users\jarora\Desktop\Master Test Sheet.xlsx"

PrintWB = .Cells(i, 1) & "\" & .Cells(i, 2)
Workbooks(PrintWB).Sheets(Sheetname).Printout From:=Frompage, To:=Topage

在引用Workbook对象时,上面的行给出了错误'Subscript out of range Error'。

引用Workbook对象时,上面一行出现以下错误:

  

下标超出范围错误

任何帮助都会受到极大的赞赏,因为这是我试图整理的最后一块拼图。

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您正在尝试打印Excel无法看到的工作簿。 Workbooks()是所有开放工作簿的集合。

第1步是打开目标工作簿。在我们打开它之前,最好检查文件路径是否准确。一个简单的IF STATEMENT就足够了:If Dir(yourfilepath) <> "" Then

步骤2是打开目标工作簿,打印目标工作表,然后关闭工作簿。我添加了行Workbooks(targetworkbook).Saved = True。这将隐藏&#34;您要保存更改吗?&#34;我们尝试关闭工作簿时弹出的对话框。我们知道我们没有做任何更改,所以使用这种方法是安全的。

WBPath = .Cells(i, 1) & "\" & .Cells(i, 2)
PrintWB = .Cells(i,2) 'I'm assuming this is "Master Test Sheet.xlsx"
If Dir(WBPath) <> "" Then
    Workbooks.Open (WBPath)
    Workbooks(PrintWB).Sheets(Sheetname).PrintOut From:=1, To:=1
    Workbooks(PrintWB).Saved = True
    Workbooks(PrintWB).Close
Else: MsgBox "File not found.", vbCritical
End If