excel - 将工作簿设置为全局变量 - 下标超出范围
问题描述
全部,
我有以下代码,使用户能够选择要打开的工作簿。我希望稍后通过自动化过程中的全局变量在自动化中定位这些工作簿,但是当我尝试执行此操作时,我遇到了超出范围的下标。
请看下面的代码:
Dim FnameAndPath As Variant
Dim ATMFNameAndPath As Variant
Sub GetUserToSelectFile()
MsgBox "Please select the daily reconciliation file"
FnameAndPath = Application.GetOpenFilename(Title:="Select File To Be Opened")
If FnameAndPath = False Then Exit Sub
Workbooks.Open Filename:=FnameAndPath
MsgBox "Please select the file with the correct ATM details on"
ATMFNameAndPath = Application.GetOpenFilename(Title:="Select ATM File To Be Opened")
If ATMFNameAndPath = False Then Exit Sub
Workbooks.Open Filename:=ATMFNameAndPath
ans = MsgBox("Please confirm the below is correct" & vbNewLine & vbNewLine & " BankRec Filelocation = " & FnameAndPath & vbNewLine & vbNewLine & " ATM File location = " & ATMFNameAndPath, vbYesNo, "Confirmation correct files selected")
If ans = vbNo Then
MsgBox "The macro will abort"
MsgBox FnameAndPath
Workbooks(FnameAndPath).Close 'ERROR Line
Workbooks(ATMFNameAndPath).Close 'Error Line
End
End If
End Sub
请有人建议我如何在以后的自动化中定位工作簿 - 当我尝试关闭工作簿时当前出现错误。
任何帮助将非常感激。
解决方案
当您打开工作簿时,您需要指定文件的完整路径(或接受当前的默认路径) - 所以 FnameAndPath 就是这样。但是,当您使用 Workbooks(name) 引用特定的打开工作簿时 - 您应该只提供名称,而不是完整路径。试试这个而不是
Workbooks.Open Filename:=FnameAndPath
尝试
Dim wbRecFile as Workbook
Set wbRecFile = Workbooks.Open(Filename:=FnameAndPath) 'note brackets
然后你可以做
sbRecFile.Close
推荐阅读
- excel - 如何在 Excel/VBA 中以标题行作为条件跨行查找?
- node.js - 如何在不缩小的情况下构建 React 的生产版本?
- vuejs2 - VueJS v-for An Array of Key:Values From Store 使用方法
- javascript - CSV Parser 在空值上添加列
- android - Firebase 云消息传递:未找到特定制造商的 ServiceIntent
- python - 无法使用 python 读取原始 cgi 响应
- javascript - R Shiny Dashboard DataTable 列宽
- html - 数字输入不遵循@media 样式
- sql - 在没有任何数字聚合的情况下选择分组依据中的第一行
- wpf - 更改 CustomControl 中子元素的样式