Curso Excel VBA y Macros – Cap. 44 – Cuadro de diálogo Abrir archivo usando GetOpenFilename
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.
-
Mostrar cuadros de diálogos propios de Excel.
Ver video Capítulo 44 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Cuadro de diálogo Abrir archivo usando el método GetOpenFilename
El cuadro de diálogo Abrir archivo es unos de los más usados, ya que nos permite precisamente eso, abrir archivos en Excel. Con el método GetOpenFilename podemos mostrar el cuadro de diálogo y con lenguaje VBA.
Este método muestra el cuadro de diálogo, pero no abre al archivo. En su lugar, nos devuelve el nombre y la ruta completa del archivo seleccionado y poder realizar acciones con ese valor.
Figura 1. Cuadro de diálogo Abrir archivo en Excel.
Sintaxis
Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText,
MultiSelect)
Donde:
ARGUMENTO |
DESCRIPCIÓN |
FileFilter |
Valor de texto que indica el filtro de archivos. Ejemplo: Archivos de Excel (*.xlsx;*.xlsm),*.xlsx;*.xlsm). |
FilterIndex |
Especifica el índice correspondiente a los filtros de archivo para indicar el filtro predeterminado. Los valores van de 1 hasta el número de filtros. Si se omite el valor, se tomará el primer filtro. |
Title |
Valor de texto que indica el título de la ventana. Si se omite, el valor será “Abrir”. |
ButtonText |
Aplicable para Excel para Mac. |
MultiSelect |
True para permitir si se pueden elegir varios archivos. False para elegir sólo un número. El valor por default es False. |
Evento Worksheet_SelectionChange
Deseamos mostrar el Cuadro de diálogo Abrir sólo cuando se seleccione una celda de la columna “E”. Para lo anterior necesitaremos usar el evento SelectionChange que nos permitirá lanzar macros al seleccionar una celda o un rango de celdas en una hoja.
Código VBA de las macros
La siguiente macro se lanzará al presionar una celda y mostrará el Cuadro de diálogo Abrir. Esta macro la podemos poner en el objeto Hoja1.
Sub ObtenerNombre() Dim Filtro As String Dim IndiceFiltro As Integer Dim Titulo As String Dim NombreArchivo As Variant Filtro = "Archivos PDF (*.pdf),*.pdf," & _ Archivos de Excel (*.xlsx;*.xlsm),*.xlsx;*.xlsm," & _" Todos los archivos (*.*),*.*"" IndiceFiltro = 2 Titulo = "Seleccionar archivo - Curso macros" NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo) If NombreArchivo <> False Then ActiveCell.Value = NombreArchivo Else MsgBox "Ningún archivo seleccionado." End If End Sub
El código siguiente corresponde al evento SelectionChange que nos ayudará a lanzar macros al seleccionar celdas. El siguiente código lo ingresamos en el objeto Hoja1.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Valor If Target.Column = 5 And Target.Cells.Count = 1 Then Valor = Target.Offset(0, -4).Value If Target.Row > 1 And Valor <> "" Then Call ObtenerNombre End If End If End Sub
Descarga el archivo de ejemplo
044 – Cuadros de diálogo Abrir archivo GetOpenFilename – 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.