Я хочу создать FileDialog, фильтр которого разрешает только файлы, соответствующие выражению xyz*.xlsm
; это позволит отображать файлы, такие как xyz123.xlsm
и xyzzat.xlsm
, но не xyz123.docx
или abc123.xlsm
.возможно иметь символы, предшествующие * в FilterDialog-фильтре?
Я использую этот код:
Sub testfd()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Filters.Add "xyz*", "xyz*.xlsm", 1
If fd.Show = -1 Then
Debug.Print fd.SelectedItems(1)
Else
Debug.Print "xyz"
End If
End Sub
Однако fd.Filters.Add
линии генерирует эти ошибки времени выполнения:
Invalid procedure call or argument
Использование фильтра *.xlsm
работает нормально.
Невозможно использовать .Filters.Add
способом, который я изложил в своем коде выше? Если да, то как я могу убедиться, что пользователь только выбирает файлы, которые начинаются и заканчиваются заданной последовательностью символов?
Edit: https://msdn.microsoft.com/en-us/library/office/aa219834(v=office.11) .aspx Используйте что-то вроде .Filters.Add «Images», «* .gif; * .jpg; * .jpeg», 1. Может быть, подстановочный знак не находится между двумя подстроками? Я не уверен. –
Я не думаю, что вы можете использовать такой шаблон: этот аргумент предназначен только для указания расширений. –
Если вам это очень нужно, почему бы не создать его с нуля? Это немного трудоемко, но просто. Я помню, как это делалось однажды ... –