错误设置时,工作簿中的变量 - 2147352565

问题描述:

我有在那设置了几个工作簿和工作表变量,这样他们就可以很容易地在整个的我模块其余部分使用的用户窗体的初始化运行一个简单的代码,并引用可以被轻易改变在一个地方如果文件移动。我最近将工作簿从桌面迁移到单独的服务器/驱动器,并相应地更新了文件路径;但是,当我尝试运行代码时,立即收到以下消息:错误设置时,工作簿中的变量 - 2147352565

“运行时错误”-2147352565(8002000b)':无法将焦点移至控件,因为它不可见,未启用或一种不接受焦点的类型“。

这个错误发生在行

Set ReportWkbk = Workbooks("N:\ rest of file pathway here\QuaRT_Template.xlsm") 

有什么,可在服务器/驱动器,是造成这一问题的发生?如果是这样,我能做些什么来解决它?我确实与保存在同一位置的其他Excel工作簿一起工作,这些工作簿似乎没有被引用的问题,尽管它们的引用位于工作簿本身中,而不是通过Visual Basic。

+0

这将有助于表现出更多的代码,包括声明你的变量。 –

+0

对不起,在代码中是正确的。我把它复制错了。 –

+0

@TimWilliams它现在已经修复,可以正确地代表我在Visual Basic中拥有的东西。 –

发生此问题的原因是Subscript Out of Range,因为Excel工作簿被引用未在中打开(或打开)相同的 Excel实例。通过创建两个工作簿(命名一个WorkBook2.xlsx)并确保它们在Excel的单独实例中打开,您可以轻松地重现该错误。然后运行该代码:

Sub OpenWkbkNames() 
    Dim wbk As Workbook 
    For Each wbk In Workbooks 
     Debug.Print wbk.Name 
    Next 
    'Hmm. Workbook 2 is not listed, but lets activate it and see what happens. 
    Workbooks("workbook2.xlsx").Activate 
End Sub 

你可以通过该工作簿的名称循环回避的问题打开的Excel THIS实例,以确保其可用。

我一直在研究Run-time error '-2147352565 (8002000b)',发现这个:https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.vsconstants.disp_e_badindex.aspx

显然,这是说Subscript Out of Range太VS的方式。我怀疑(但没有可靠的证据),因为代码在本地工作,但问题出现在文件迁移到共享驱动器后,Windows需要很长时间才能打开该文件,以便在Excel的新实例中打开该文件。实质上,Excel变得不耐烦,并决定在Windows完成其任务时继续前进。我将此假设基于添加到Excel 2013的检测逻辑(https://blogs.office.com/2013/06/03/opening-workbooks-by-running-separate-instances-of-excel/)。

+0

谢谢!这很棒! –