首页 > 解决方案 > 将工作簿设置为全局变量 - 下标超出范围

问题描述

全部,

我有以下代码,使用户能够选择要打开的工作簿。我希望稍后通过自动化过程中的全局变量在自动化中定位这些工作簿,但是当我尝试执行此操作时,我遇到了超出范围的下标。

请看下面的代码:

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

请有人建议我如何在以后的自动化中定位工作簿 - 当我尝试关闭工作簿时当前出现错误。

任何帮助将非常感激。

标签: excelvba

解决方案


当您打开工作簿时,您需要指定文件的完整路径(或接受当前的默认路径) - 所以 FnameAndPath 就是这样。但是,当您使用 Workbooks(name) 引用特定的打开工作簿时 - 您应该只提供名称,而不是完整路径。试试这个而不是

    Workbooks.Open Filename:=FnameAndPath

尝试

    Dim wbRecFile as Workbook
    Set wbRecFile = Workbooks.Open(Filename:=FnameAndPath)  'note brackets

然后你可以做

    sbRecFile.Close

推荐阅读