Страницы: 1
RSS
Использование FileDialog(msoFileDialogFilePicker)
 
Привет всем!
Подскажите, пожалуйста, что не так делаю. Пытаюсь написать процедуру выбора файла рабочей книги через диалоговое окно для последующей работы с ним (в данном случае MsgBox с указание пути к файлу). При этом, если пользователь выбирает файл, отличающийся от шаблонов "*.xlsx", "*.xls" и "*.xlsm", то процедура возвращает пользовательское сообщение об ошибке. Но что-то не получается: либо ошибка для любых файлов, либо MsgBox с указанием пути для любых файлов.

Буду благодарен за подсказку.

Код
Sub PickFolder()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Dim vrtSelectedItem As Variant
    Dim MyCheck As Boolean
 
    With fd
       If .Show = -1 Then
          For Each vrtSelectedItem In .SelectedItems
             Select Case False
                Case MyCheck = vrtSelectedItem Like "*.xlsx", _
                   MyCheck = vrtSelectedItem Like "*.xls"
                   MyCheck = vrtSelectedItem Like "*.xlsm" 
                  MsgBox "Неверный формат"
                   Exit Sub
             Case Else
                   MsgBox "Путь к файлу: " & vrtSelectedItem
 
             End Select
            Next vrtSelectedItem
          Else
       End If
    End With
 
End Sub
Изменено: Дмитрий Полищук - 06.08.2013 12:47:44
 
Используйте Application.getopenfilename и будет Вам счастье. Там можно устанавливать фильтры на типы файлов.
Я сам - дурнее всякого примера! ...
 
Цитата
KuklP пишет:
Используйте Application.getopenfilename и будет Вам счастье. Там можно устанавливать фильтры на типы файлов.

Благодарю за ответ и рекомендацию.
Но все же на будущее: в чем проблема данной процедуры?
 
В футуристическом написании Select Case  :D  Почитайте справку по нему. Там и пример есть, как его использовать.
Я сам - дурнее всякого примера! ...
 
откажитесь от select case - используйте if vrtSelectedItem Like "*.xlsx" or .. or .. then .. else
Живи и дай жить..
 
ну  а с ошибкой - посмотрите сами, в вашем списке значений case обязательно будет хотябы один false - значит он всегда будет выполняться. надо перевернуть, искать истину( только не в вине)
Живи и дай жить..
Страницы: 1
Читают тему
Наверх