Úprava, keďže nastáva problém s tým, že každá aplikácia môže mať iba jeden msoFileDialogOpen, tak po zatvorení tohto upraveného dialógu, ostáva stále filter CSV. Obnoví sa to až po reštarte aplikácie. Vyriešil som to tak, že som najskôr odložil filtre do poľa, vykonal, a následne z poľa pôvodné filtre obnovil. Je to potrebné preto, ak by sa niekde v aplikácii použil msoFileDialogOpen, kde je potrebný iný/žiadny filter.
Sub OtvorCSV() 'Otvor súbor CSV, obnv pôvodné filtre
Dim dlg As FileDialog, f As Integer, pfs() As String
Set dlg = Application.FileDialog(msoFileDialogOpen)
With dlg
With .Filters
If .Count > 0 Then 'Ak sú pôvodné filtre - uchovaj
ReDim pfs(1 To .Count, 1 To 2)
For f = 1 To .Count
pfs(f, 1) = .Item(f).Description
pfs(f, 2) = .Item(f).Extensions
Next f
End If
End With
.Filters.Clear 'Vymaž filtre
.Filters.Add "CSV Files Only", "*.csv" 'Nastav CSV filter
If .Show = True Then .Execute
Koniec:
With .Filters
.Clear 'Vymaž CSV filter
If Not Not pfs Then 'Ak boli pôvodné filtre - obnov
For f = 1 To UBound(pfs, 1)
.Add pfs(f, 1), pfs(f, 2)
Next f
End If
End With
End With
Set dlg = Nothing
End Subcitovat