Открывающая книгу с FilePicker в VBA выдает ошибку компиляции - PullRequest
1 голос
/ 08 октября 2019

Я определяю книгу как переменную с помощью FilePicker. Вверху я определил мою переменную как public и string. Я пытался объявить его как книгу, но он не работает. Определив его как строку, когда я пытаюсь попасть в эту книгу в другом модуле, я получаю следующую ошибку компиляции:

Неверный квалификатор.

Есть предложения, что не так?

Public wipreport As String

sub wip()

With Application.FileDialog(msoFileDialogFilePicker)
        'Makes sure the user can select only one file
        .AllowMultiSelect = False
        .Title = "Select WIP Report"
        .ButtonName = "OK"
        'Filter to just the following types of files to narrow down selection options
        .Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
        'Show the dialog box
        .Show

        'Store in fullpath variable
        wipreport = .SelectedItems.Item(1)
    End With

end sub

Строка кода в другом модуле, где я получаю эту ошибку компиляции:

wipreport.Worksheets("1. WIP report").Select

Спасибо за помощь.


Ответы [ 2 ]

2 голосов
/ 08 октября 2019

FileDialog возвращает имя файла как String объект, но вы пытаетесь использовать его как Workbook. Если пользователь выбрал файл, то сначала нужно открыть его, а затем попытаться выбрать лист:

Set wb = Workbooks.Open(wipreport) 'open the file
wb.Worksheets("1. WIP report").Select ' your code
2 голосов
/ 08 октября 2019

Ошибка компиляции - лучшая из возможных ошибок - компилятор явно говорит, что она не работает. В этом случае wipreport.Worksheets("1. WIP report").Select не может работать, поскольку wipreport имеет тип String и не имеет свойства Worksheets.

Возможно, попробуйте что-то подобное, оно будет работать, если wipreportимя открытого файла Excel:

Workbooks(wipreport).Worksheets("1. WIP report").Select

Если wipreport - это путь к файлу, тогда лучше открыть его:

Workbooks.Open wipreport

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

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=wipreport)

И хотя по теме, есть причина, по которой этот вопрос имеет наибольшее количество голосов в #VBA в StackOverflow - Как избежать использования Selectв Excel VBA .

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