Ссылка на книгу со строковой переменной - PullRequest
0 голосов
/ 29 января 2020

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

Когда я пытаюсь сослаться на рабочую книгу, я получаю нижний индекс из Ошибка диапазона. Непосредственный ввод имени книги вместо переменной работал просто отлично, но попытка использовать переменную не сработала. Я пытался использовать кавычки, без кавычек и двойные кавычки, но ошибка осталась прежней.

Вот мой код. Что именно я делал не так?

Sub ObtainExternalWorkbook()

'Declare variables
    Dim filepath As String
    Dim WK As FileDialog
    Set WK = Application.FileDialog(msoFileDialogFilePicker)

'Acquire file name.
  MsgBox ("Please select the desired file to be used.")
        With WK
            .AllowMultiSelect = False
            .Title = "Select the desired file."
            If .Show = False Then
                Exit Sub
            End If
        filepath = .SelectedItems.Item(1)
        End With


'Use file name to activate workbook.
    Workbooks(" & filepath & ").Activate
End Sub

1 Ответ

1 голос
/ 29 января 2020

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

Попробуйте заполнить переменную filename с помощью этой функции после выбора файла, и тогда Workbooks(filename).Activate должно работать.

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