设置已打开的工作簿时,下标超出范围,VBA

时间:2013-09-16 14:57:07

标签: excel vba automation subscript

栈人,

我遇到了一个令人不安的问题。我正在编写一个宏,允许用户选择并使用已经打开的工作簿。通过用户表单从用户获取名称后,当我尝试设置工作簿,或者与其进行交互时,我得到一个超出范围错误的下标。我已确认工作簿已打开,并且ExcelAp对象正在连接到正确的excel实例。以下是相关代码:

Option Explicit

....

Public Sub TerminalOpen()
Dim WorkbookOpen        As VbMsgBoxResult
Dim ExcelAp             As Excel.Application
Dim FedExWkbk           As Excel.Workbook

....

Else
    Set ExcelAp = Excel.Application
    WorkbookSelection.Show
    WkbkFedExTracking = Trim(VBA.Left(WkbkFedExTracking, InStr(1, WkbkFedExTracking, ".", vbTextCompare) - 1))
    Set FedExWkbk = ExcelAp.Workbooks(WkbkFedExTracking)  <<<<< This is where the error occurs
    FedExWkbk.Activate
End If

为了记录,我也尝试过延迟绑定ExcelAp,没有任何乐趣。这种方法似乎在其他情况下有效,但在这一方面并不那么友好。和往常一样,如果你能提供任何建议,我会全力以赴!

编辑:只是想添加工作簿名称存储在WkbkFedExTracking字符串中。它被清理为只有.xlsx部分的工作簿名称。想要说清楚。此外,在调试时,我已经根据打开的工作簿的名称进行了双重检查,这是正确的。

1 个答案:

答案 0 :(得分:0)

此问题已得到解决。它是工作簿的索引名称上的.xlsx扩展名的组合,以及由于应用程序位置不佳而导致的excel的杂散实例.Visible = true line。有关详细信息,请参阅原始帖子中的评论。