将工作簿设置为全局变量-下标超出范围

时间:2018-12-11 15:57:52

标签: excel vba excel-vba

全部

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

请参见以下代码:

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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

    Workbooks.Open Filename:=FnameAndPath

尝试

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

然后您就可以

    sbRecFile.Close