当input已经打开的工作簿时,下标超出范围,VBA

堆栈的人,

我有一个麻烦的问题。 我正在写一个macros,允许用户select和使用已打开的工作簿。 在用户通过用户表单获得名称后,当我尝试设置工作簿或与其交互时,会出现下标超出范围的错误。 我已经确认工作簿已经打开,并且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 

为了logging,我也尝试了很晚才把ExcelAp绑定起来。 这种方法似乎在其他情况下也起作用,但在这一方面并不那么友好。 一如既往,如果你能提供任何build议,我全部耳朵!

编辑:只是想添加工作簿名称正在存储在WkbkFedExTrackingstring中。 它被清理到工作簿的名称没有.xlsx部分。 想要说清楚。 此外,在debugging我已经仔细检查打开工作簿的名称,这是正确的。

这个问题已经解决了。 这是工作簿的索引名称上的一个丢失的.xlsx扩展名的组合,以及由于应用程序放置不当而导致的excel的一个杂散实例。可见性=真正的行。 有关更多详细信息,请参阅原始post上的评论。