全部
我有以下代码,使用户可以选择要打开的工作簿。我希望稍后通过自动化中的全局变量将这些工作簿定位为自动化中的对象,但是当我尝试执行此操作时,我将遇到下标超出范围的情况。
请参见以下代码:
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
请有人建议我在以后的自动化中如何定位工作簿-当我尝试关闭工作簿时,当前会出现错误。
任何帮助将不胜感激。
答案 0 :(得分:0)
打开工作簿时,您需要指定文件的完整路径(或接受当前的默认路径)-因此FnameAndPath就是这样。但是,当您使用Workbooks(name)引用特定的打开的工作簿时-您应该仅提供名称,而不是完整路径。 试试这个代替
Workbooks.Open Filename:=FnameAndPath
尝试
Dim wbRecFile as Workbook
Set wbRecFile = Workbooks.Open(Filename:=FnameAndPath) 'note brackets
然后您就可以
sbRecFile.Close