Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            ¿Es una opción Microsoft Access para mi negocio?
            26/11/2021
            Tipo de variable Decimal
            13/12/2021
            Mostrar todos

            mcFileDialog Cuadro de diálogo Abrir archivo

            Publicado por Rafael Andrada
            Categorías
            • Un trocito de código
            Etiquetas
            • Archivo
            • Buscar
            • Carpeta

            Mostrar el cuadro de diálogo Abrir archivo de Office para seleccionar una carpeta o un archivo.


            Nivel: Medio

            Código:
            Sub mcFileDialog_Example()
            
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/mcfiledialog-cuadro-de-dialogo-abrir-archivo
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : mcFileDialog Cuadro de diálogo Abrir archivo.
            ' Autor original    : De varios ejemplos y artículos siendo una recopilación de ellos y de la experiencia de utilizarlo.
            ' Adaptado por      : Rafael Andrada .:McPegasus:. | BeeSoftware.
            ' Actualizado       : 10/11/2021.
            ' Propósito         : Mostrar el cuadro de diálogo Abrir archivo de Office para seleccionar una carpeta o un archivo.
            ' Retorno           : Si se convierte en función puede obtenerse diversos retornos, el nombre del archivo seleccionado o de la carpeta o incluso toda la ruta del fichero.
            ' Sobre Referenciar : El referenciar una librería externa nos permite seleccionar los objetos de otra aplicación que se desea que estén disponibles en nuestro código.
            '                     También acceder a sus métodos utilizar las constantes.
            '                     En caso de ser opcional podemos seguir utilizándolo aunque las constantes hay que sustituirlas por su valor, normalmente numérico.
            '                     Más información: https://support.microsoft.com/es-es/office/add-object-libraries-to-your-visual-basic-project-ed28a713-5401-41b0-90ed-b368f9ae2513
            ' Referencia        : Opcional. Windows Script Host Object Model (c:\Windows\system32\wshom.ocx)/>
            ' Referencia        : Opcional. Microsoft Office 16.0 Object Library (c:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\...)/>
            ' Más información   : https://docs.microsoft.com/es-es/office/vba/api/access.application.filedialog
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar todo el procedimiento desde el Sub hasta el End Sub
            '                     al portapapeles y pega en el editor de VBA de tu aplicación MS Access. Descomentar todas las líneas que nos interese (se aconseja seleccionar
            '                     todas las líneas del ejemplo y utilizar el botón 'Bloque sin comentarios' de la barra de herramientas 'Edición').
            '                     Pulsar F5 para ver su funcionamiento.
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            
                '<mcKB>
                '<Grupo= Archivos/>
                '<Subgrupo=/>
                '<Autor= Rafael .:McPegasus:./>
                '<Contacto= rafael@mcpegasus.net, www.mcpegasus.net/>
                '
                'OBSERVACIONES INTERNAS PARA DEVELOPER (visibles sólo aquí): Sólo se guarda en tblmcKB este primer grupo donde se indica la versión <Versión= 01/>, el grupo de <Revisión = nn/> no.
                '<Versión= 01/><Fecha creación= 10/11/2021/>
                '<Descripción= Ejemplo de abrir un cuadro de diálogo para seleccionar una carpeta o un archivo./>
                '
                '<Tags= abrir archivo, guardar archivo, seleccionar carpeta./>
                '
                '<Referencia= Opcional: Windows Script Host Object Model (c:\Windows\system32\wshom.ocx)/>
                '<Referencia= Opcional: Microsoft Office nn.0 Object Library (c:\Program Files (x86)\Common Files\Microsoft Shared\OFFICEnn\...)/>
                '
                '<Más información= https://docs.microsoft.com/es-es/office/vba/api/access.application.filedialog/>
                '
                '</mcKB>
                
                Dim objWshShell                                 As Object           'En mcstrSpecialFolderPath hay más información sobre esta declaración.
            '    Dim objWshShell                                 As New WshShell
            
                Dim bytFileDialogType                           As Byte
            
                Dim strFileName                                 As String
                Dim strPathFile                                 As String
                Dim strPathInitiation                           As String
                Dim strRet                                      As String           'Valor del retorno final.
                Dim strWork                                     As String
            
                
                'Si tenemos la referencia Microsoft Office nn.0 Object Library se pueden utilizar las diferentes constantes como msoFileDialogOpen, msoFileDialogFolderPicker, etc.
                
                bytFileDialogType = 1
                'msoFileDialogOpen = 1 = Cuadro de diálogo Abrir. _
                    Nos permite seleccionar un archivo. Nos retorna la ruta completa. _
                    Aparentemente hace lo mismo que el 3.
                
            '    bytFileDialogType = 2
                'msoFileDialogSaveAs = 2 = Cuadro de diálogo Guardar como. _
                    La típica selección "Guardar como" que nos sirve para guardar un documento que hayamos generado, un pdf, un Excel por ejemplo. _
                    Si se indica el nombre y no existe en la carpeta que se elija finaliza la acción, pero si se selecciona un archivo que ya exista nos lo indica y nos pregunta ¿Desea reemplazarlo?
                
             '   bytFileDialogType = 3
                'msoFileDialogFilePicker = 3 = Cuadro de diálogo selector de archivos. _
                    Aparentemente hace lo mismo que el 3.
                
            '    bytFileDialogType = 4
                'msoFileDialogFolderPicker = 4 = Cuadro de diálogo selector de carpetas. _
                    Desde esta opción podemos seleccionar una ruta para luego guardar un archivo como un snp, pdf, etc.
                                                                
                strPathInitiation = ""                                                      'Si no se pasa una ruta inicial se abre en la ruta \Mis documentos.
                                                                
                With Application.FileDialog(bytFileDialogType)
                    Select Case bytFileDialogType                                           'Titulo de la barra de títulos.
                        Case 1
                            .Title = "Seleccionar el archivo a abrir."
                    
                        Case 2
                            .Title = "Seleccionar la carpeta o archivo donde guardar como."
                        
                        Case 3
                            .Title = "Seleccionar el archivo a importar."
                    
                        Case 4
                            .Title = "Seleccionar la carpeta donde alojar el pdf."
                    
                    End Select
                    
                    If strPathInitiation = "" Then
                        Set objWshShell = CreateObject("WScript.Shell")
                        strPathInitiation = objWshShell.SpecialFolders("MyDocuments")
                        Set objWshShell = Nothing
            
                    End If
                    strPathInitiation = strPathInitiation & IIf(Right(strPathInitiation, 1) = "\", Null, "\")
                    
                    .InitialFileName = strPathInitiation
                    If bytFileDialogType = 1 Or bytFileDialogType = 3 Then
                        .Filters.Clear
                        .Filters.Add "All Files", "*.*"
                        .Filters.Add "Archivos de Excel", "*.xl*"
                        .Filters.Add "Archivos de Word", "*.doc*"
                        .Filters.Add "JPEGs", "*.jpg"
                        .Filters.Add "Bitmaps", "*.bmp"
                        .FilterIndex = 3
                        .AllowMultiSelect = False
                    
                    End If
                    
                    '28/11/2021 No funciona .InitialView en Windows 10. Si se sabe como hacerlo funcionar correctamente ruego se ponga en contacto en rafael@mcpegasus.net.
                    'Establecer el tipo de Vistas, nombre de las constantes y su valor decimal para usar cuando no se referencia. _
                    msoFileDialogViewLargeIcons = 6, Iconos grandes. _
                    msoFileDialogViewSmallIcons = 7, Iconos pequeños _
                    msoFileDialogViewList = 1, Lista _
                    msoFileDialogViewDetails = 2, Detalles _
                    msoFileDialogViewProperties = 3, Propiedades _
                    msoFileDialogViewPreview = 4, Vista previa _
                    msoFileDialogViewThumbnail = 5, Vista en miniaturas. _
                    msoFileDialogViewWebView = 8, Vista web _
                    msoFileDialogViewTiles = 9, Se produce un error en Windows XP Pro SP2, Office XP.
                    '.InitialView = 9
                    
                    If Not .Show = 0 Then
                        strWork = Trim(.SelectedItems.Item(1))
                    
                    End If
                    
                    If Not strWork = "" Then
                        strFileName = Dir(strWork, vbArchive)
                        strPathFile = Mid(strWork, 1, Len(strWork) - Len(strFileName))
                        
                        If bytFileDialogType = 1 Or bytFileDialogType = 2 Or bytFileDialogType = 3 Then
                            strRet = strPathFile & strFileName
                            
                        Else
                            strRet = strPathFile
                            
                        End If
                    End If
                End With
                
                Debug.Print strRet
                
            End Sub
            
            Ver en el repositorio
            Compartir
            0
            Rafael Andrada
            Rafael Andrada

            Entradas relacionadas

            19/03/2023

            Función que convierte cualquier carácter a texto puramente ASCII (Access VBA)


            Leer más
            24/03/2022

            Obtener la fecha del primer día de la semana o último día de la semana en Access VBA


            Leer más
            11/03/2022

            Actualizar una conexión ODBC en tiempo de ejecución


            Leer más

            2 Comments

            1. Xavi dice:
              04/01/2022 a las 3:15 pm

              El error de InitialView parece que no se ha solucionado. Pero existe una técnica mediante API que permite salvar eso. En este link: https://www.mrexcel.com/board/threads/filedialog-initialview-property-doesnt-work.1099626/ se puede encontrar una respuesta perfectamente válida.
              El código está escrito para Excel por lo que debe adaptarse (básicamente es cambiar Application.hwnd por Access.hWndAccessApp)

              Yo lo utilice en Excel tiempo atrás y la adaptación a Access son 5 minutos.

              Responder
              • Webmaster dice:
                04/01/2022 a las 4:52 pm

                ¡Muchas gracias Xavi!

                Responder

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Jose Bengoechea Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              ¿Mis procedimientos tienen tratamiento de errores?
              21/03/2023
            • 0
              Moda, mediana y algo más
              20/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados