VBA运行时错误'9':下标超出范围; 试图激活另一个工作簿

Lou*_*Lou 3 excel vba excel-vba excel-2010

我正在尝试在Excel 2010中创建一个VBA,它从另一个我不允许更改的电子表格中获取信息,并将其带入内置宏的电子表格.这是我的代码:

Sub BringUpWorkbook()
    Workbooks("RITE 1624.xls").Activate
End Sub
Run Code Online (Sandbox Code Playgroud)

我有几本VBA书籍,访问过互联网上的几十个网站,包括那些在stackoverflow.com上的网站,并且找不到我收到运行时错误的原因.工作簿已经打开,我已经尝试添加标题后面的所有内容,我已经尝试删除了.xls,我甚至在变量中完成了上述所有操作.有任何想法吗?

Jay*_*cal 7

确保扩展名正确.如果它是您指定的excel-2010文件,则可能需要更新代码以反映"RITE 1624"文件的扩展名(例如,对于2010 Excel工作簿的.xlsx,对于2010 Excel宏启用的工作簿,.xlsm,或者扩展名是什么.

Sub BringUpWorkbook()
    Workbooks("RITE 1624.xlsx").Activate
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑:

若要确保您具有正确的工作簿名称,您可以在即时窗口中打印每个工作簿的名称.

打开VBA编辑器,然后按Ctrl + G打开立即窗口(或执行视图>立即窗口).然后运行以下宏:

Sub OpenWkbkNames()

For Each Workbook In Workbooks
    Debug.Print Workbook.Name
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

请注意,这将为您提供与宏相同的Excel实例中所有打开的工作簿的名称.如果您的RITE 1624文件位于单独的Excel实例中,则宏所在的实例将无法看到该文件(并且它不会出现在上面的OpenWkbkNames代码的输出中).解决此问题的最简单方法是从包含宏的Excel实例中打开所有必需的文件.

Sub BringUpWorkbook()

    Workbooks.Open("RITE 1624.xls").Activate
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 一定是电脑故障.我关闭,重新启动,并再次尝试您的代码.这一次,它奏效了.谢谢. (2认同)