Задание рабочей книги в качестве глобальной переменной - индекс вне диапазона - PullRequest
0 голосов
/ 11 декабря 2018

Все,

У меня есть код ниже, который позволяет пользователям выбирать книги для открытия.Я хочу нацелить эти рабочие книги позже при автоматизации через глобальную переменную на протяжении всей автоматизации, однако, когда я пытаюсь это сделать, я сталкиваюсь с нижним индексом вне диапазона.

Пожалуйста, смотрите код ниже:

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 голосов
/ 11 декабря 2018

Когда вы открываете рабочую книгу, вам нужно указать полный путь к файлу (или принять текущий путь по умолчанию), поэтому FnameAndPath - это именно то.Но когда вы ссылаетесь на определенную открытую рабочую книгу, используя Рабочие книги (имя), вы должны указать только имя, а не полный путь.попробуйте это вместо

    Workbooks.Open Filename:=FnameAndPath

попробуйте

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

и тогда вы можете сделать

    sbRecFile.Close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...