Настройка книги с именем переменной - PullRequest
0 голосов
/ 23 октября 2019

Я сталкиваюсь со странной проблемой, когда использую имена переменных для определения и установки переменных для рабочих книг. Пользователь открывает три рабочие книги (панель инструментов, источник и цель). Затем в рабочую книгу пользователя вводятся имена исходных и целевых рабочих книг - например, «source.xls» и «target.xlsm». Эти входные данные определяются как имена в диапазоне, называемые «FILE_SOURCE» и «FILE_TARGET».

Поэтому я использую имена диапазонов для определения переменных моей книги, как показано ниже:

Dim sourceModel, targetModel As String
sourceModel = wbMainDashboard.Range("FILE_SOURCE") 'Pull from dashboard input (works)
targetModel = wbMainDashboard.Range("FILE_TARGET") 'Pull from dashboard input (works)

'Source and target workbooks
Dim wbSource As Workbook: Set wbSource = Workbooks(sourceModel) 'Workbook already open (doesn't work)
Dim wbTarget As Workbook: Set wbTarget = Workbooks(targetModel) 'Workbook already open (doesn't work)

Thisотлично работает, когда исходная и целевая книги сохраняются на рабочем столе, но по какой-то причине не работает, когда они сохраняются на дисках моего компьютера. Таким образом, я подумал, что мне, возможно, придется указать полный путь к исходной и целевой книгам для определения переменных wbSource и wbTarget?

Чтобы сделать это, я попытался реализовать следующую функциюкоторый должен возвращать пути к файлам:

Public Function GetWorkbookReference(ByVal sFullName As String) As Workbook

Dim wbReturn As Workbook

Set wbReturn = Workbooks(Dir$(sFullName))
Set GetWorkbookReference = wbReturn

End Function

После чего я хотел вызвать эту функцию при определении переменных wbSource и wbTarget:

Dim wbSource As Workbook: Set wbSource = GetWorkbookReference(sourceModel) 'Workbook already open (doesn't work)
Dim wbTarget As Workbook: Set wbTarget = GetWorkbookReference(targetModel) 'Workbook already open (doesn't work)

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

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