FileDialog показывает только типы файлов, указанные в фильтре. Это верно.
Но если что-то будет введено в поле Имя файла, будут отображаться все типы файлов:
Теперь можно выбрать и открыть файл любого типа.
Это нехорошо.
Есть ли решение проблемы?
Вы должны отфильтровать (снова) результат FileDialog ...
FileDialog
If LCase(Right(.SelectedItems(1), 4)) = "xlsm" Then 'do whatever you need End If