Curso Excel VBA y Macros – Cap. 46 – FileDialog para Abrir, Guardar como, Elegir Archivo y Carpeta
Los formularios y cuadros de diálogo son parte fundamental de las aplicaciones o programas de Windows, Linux y Mac. En Excel si bien podemos desarrollar nuestros propios formularios, es importante saber que podemos usar los cuadros de diálogos que ya incluye Excel y mandarlos llamar desde VBA.
En esta sección previa a los Userforms, veremos algunos temas referentes a Cuadros de diálogo propios de Excel:
-
Cuadro de diálogo Abrir: método GetOpenFilename.
-
Cuadro de diálogo Guardar como: método GetSaveAsFilename.
-
Objeto FileDialog para usar Cuadros de diálogo de archivo, usando msoFileDialogOpen, msoFileDialogFilePicker, msoFileDialogFolderPicker y msoFileDialogSaveAs.
-
Mostrar cuadros de diálogos propios de Excel.
Ver video Capítulo 46 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Objeto FileDialog
Este objeto nos permite utilizar Cuadros de diálogo referentes al manejo de archivos; cuadros de diálogo de Abrir y Guardar.
Sintaxis
Application.FileDialog(argumento)
El objeto FileDialog sólo tiene un argumento, que sería el tipo de formulario que deseamos mostrar, los cuales son:
-
Cuadro de diálogo Abrir (msoFileDialogOpen). Para abrir un archivo o varios seleccionados deberemos usar el método Execute.
-
Cuadro de diálogo Elegir archivo (msoFileDialogFilePicker). El dato de la ruta y nombre completo de los archivos seleccionados se obtienen mediante la colección FileDialog.SelectedItems.
-
Cuadro de diálogo Elegir carpeta (msoFileDialogFolderPicker). Para mostrar la ruta del directorio seleccionado lo hacemos usando la colección FileDialog.SelectedItems.
-
Cuadro de diálogo Guardar como (msoFileDialogSaveAs). Para guardar el archivo con el nombre elegido usando el método Execute.
Propiedades del objeto FileDialog
Depende del Cuadro de diálogo, tendremos la oportunidad de usar las siguientes propiedades:
-
InitialFilename: Permite posicionarnos en una carpeta y/o definir un nombre de archivo predeterminado.
-
Filters.Clear: Borra los filtros del Cuadro de diálogo.
-
Filters.Add: Agregamos filtros para mostrar archivos. Ejemplo: “Excel y TXT”, “*.xlsx, *.txt”.
-
Filter.Index: Permite definir el filtro predeterminado de una lista.
-
Title: Cadena de texto que indica el título del cuadro de diálogo.
-
Show: Muestra el cuadro de diálogo.
-
Execute: Permite abrir archivos y guardar.
Abrir archivo VBA
La siguiente macro mostrará el cuadro de diálogo Abrir.
Sub AbrirArchivo() With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "Excel y TXT", "*.xlsx, *.txt" .FilterIndex = 2 .Show .Execute End With End Sub
Elegir archivo VBA
La siguiente macro permite mostrar el cuadro de diálogo para Elegir un archivo o varios.
Sub ElegirArchivo() Dim Dialogo As FileDialog Dim ArchivoSeleccionado As Variant Set Dialogo = Application.FileDialog(msoFileDialogFilePicker) Dialogo.Title = "Elegir archivo" If Dialogo.Show = -1 Then For Each ArchivoSeleccionado In Dialogo.SelectedItems MsgBox ArchivoSeleccionado Next ArchivoSeleccionado Else MsgBox "Nada" End If Set Dialogo = Nothing End Sub
Elegir carpeta VBA
La siguiente macro nos permite elegir una carpeta y mostrar la ruta.
Sub ElegirCarpeta() Dim Ruta As String With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = ThisWorkbook.Path & "\" .Title = "Seleccionar carpeta" .Show If .SelectedItems.Count = 0 Then MsgBox "Nada" Else Ruta = .SelectedItems(1) MsgBox Ruta End If End With End Sub
Guardar filtro como archivo nuevo
La siguiente macro ayudará a copiar un rango filtrado para posteriormente pegarlo en un archivo nuevo y mostrar el cuadro de diálogo Guardar como para guardar el archivo.
Sub GuardarFiltro() Range("A1").CurrentRegion.Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Application.Workbooks.Add ActiveSheet.Paste ActiveSheet.Range("A1").Select Application.CutCopyMode = False With Application.FileDialog(msoFileDialogSaveAs) .FilterIndex = 16 .InitialFileName = Application.DefaultFilePath & "\Filtro" .Show If .SelectedItems.Count > 0 Then .Execute Else MsgBox "Nada" End If End With End Sub
Descarga el archivo de ejemplo
046 – Cuadros de diálogo con FileDialog – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.