Buenas tengo dos problemas con GetSaveFileName y GetOpenFileName , el cual no me respeta los filtros
este es el codigo que estoy usando
En un modulo
y en el formularioCódigo:Private Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" ( _ pOpenfilename As OPENFILENAME) As Long Private Declare Function GetSaveFileName Lib "comdlg32.dll" _ Alias "GetSaveFileNameA" ( _ pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Public Function OpenFile(Filter As String) As String Dim OFName As OPENFILENAME With OFName .lStructSize = Len(OFName) '.hwndOwner = Me.hWnd .hInstance = App.hInstance .lpstrFilter = Filter .lpstrFile = Space$(254) .nMaxFile = 255 End With If GetOpenFileName(OFName) Then OpenFile = Trim$(OFName.lpstrFile) End Function Public Function SaveFile(Filter As String) As String Dim OFName As OPENFILENAME With OFName .lStructSize = Len(OFName) '.hwndOwner = Me.hWnd .hInstance = App.hInstance .lpstrFilter = Filter .lpstrFile = Space$(254) .nMaxFile = 255 End With If GetSaveFileName(OFName) Then SaveFile = Trim$(OFName.lpstrFile) End Function
Código:Private Sub Command1_Click() Dim Filtro As String, Path As String Filtro = "Archivos de Datos (*.LIA)" + Chr$(0) + "*.LIA" + Chr$(0) Path = SaveFile(Filtro) MsgBox Path End Sub Private Sub Command2_Click() Dim Filtro As String, Path As String Filtro = "Archivos de Datos (*.LIA)" + Chr$(0) + "*.LIA" + Chr$(0) Path = OpenFile(Filtro) MsgBox Path End Sub
el problema en el caso de Guardar, es que cuando yo pongo un nombre en el cuadro de dialgo por ejemplo "Documento" este me retorna solamente Ruta + "Documento" y no como el commandialog.ocx que este te devuelve Ruta + "Documento.LIA"
y en el caso de Abrir , si yo escrivo en el cuadro de texto del dialogo "Documento.html y este archivo existe en ese directorio , pues me lo hacepta siendo que yo en el filtro indique que solamente me abra los "*.LIA"
Se que podria hacer unas validaciones, pero realmente no esta bien que sea asi, porque algunas aplicaciones filtran esto.
Saludos