Busque la ruta del archivo con VBA: inserte el valor en la celda
En esta publicación, veremos cómo buscar la ruta del archivo con VBA y luego insertar la ruta del archivo seleccionada en una celda.
Esta publicación está inspirada en una pregunta que recibí:
"Si quisiera agregar un botón de exploración justo al lado de la celda que contiene la ruta del archivo para no tener que copiar y pegar manualmente la ruta del archivo en la celda, ¿cómo lo haría?"
Bien, déjame mostrarte la solución que se me ocurrió.
Tabla de contenido
- La solución
- Construyendo la solución
- Crear un rango con nombre
- La macro VBA
- Insertar imagen de carpeta
- Asignar macro a imagen
- Pruébalo
- Conclusión
Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.
Nombre del archivo: 0052 Inserte la ruta del archivo en la celda con el botón Examinar.zip
Tener acceso
La solución
Antes de ver cómo construirlo, veamos la solución en acción.
La celda C3 contiene una ruta de archivo, con un icono de carpeta al lado.
Si hacemos clic en el icono de la carpeta, se abre el cuadro de diálogo de apertura de archivo. Podemos seleccionar un archivo y hacer clic en Abrir.
La ruta del archivo ahora se inserta en la celda C3 .
Si estás aquí para descubrir cómo hacerlo tú mismo, entonces estás en el lugar correcto.
Construyendo la solución
Ahora sabemos lo que hace; vamos a construirlo.
Crear un rango con nombre
Primero, necesitamos crear un rango con nombre para la celda que contiene la ruta del archivo.
Si bien este paso no es esencial, reduce el riesgo de error. Si escribimos una macro que hace referencia a la celda C3 y luego insertamos una nueva fila o columna, el código de la macro no cambia, por lo que luego se refiere a la celda incorrecta. celúla. Por lo tanto, los rangos con nombre ayudan a eliminar este riesgo.
- Seleccione la celda que contiene la ruta del archivo
- En el cuadro de nombre, escriba filePath y presione Enter
Primer paso. Hecho. ✅
La macro VBA
La principal fuerza impulsora de esta solución es una macro VBA.
Si tiene visible la cinta Desarrollador, haga clic en Desarrollador Visual Basic . si no, presione ALT + F11 .
Se abre el editor de Visual Basic.
Haga clic derecho en el archivo en la ventana del proyecto, luego haga clic en Insertar módulo en el menú.
Se abre un nuevo módulo de código. Ingrese el siguiente código en el módulo de código
Sub selectFile()'Create and set dialog box as variableDim dialogBox As FileDialogSet dialogBox = Application.FileDialog(msoFileDialogOpen)'Do not allow multiple files to be selecteddialogBox.AllowMultiSelect = False'Set the title of the DialogBoxdialogBox.Title = "Select a file"'Set the default folder to opendialogBox.InitialFileName = "C:UsersmarksDownloadsExample Folder"'Clear the dialog box filtersdialogBox.Filters.Clear'Apply file filters - use ; to separate filters for the same namedialogBox.Filters.Add "Excel workbooks", "*.xlsx;*.xls;*.xlsm"'Show the dialog box and output full file nameIf dialogBox.Show = -1 Then ActiveSheet.Range("filePath").Value = dialogBox.SelectedItems(1)End IfEnd Sub
Los comentarios en el código describen el propósito de cada sección.
Tome nota de lo siguiente, ya que deberá cambiar el código para su escenario específico.
ActiveSheet.Range(“filePath”).Value = dialogBox.SelectedItems(1)
Cambie la palabra filePath para el rango con nombre que creó anteriormente.
dialogBox.InitialFileName = “C:UsersmarksDownloadsExample Folder”
Contiene la ruta de la carpeta predeterminada donde se abre el selector de archivos cada vez. Cambie esto para que coincida con su entorno.
dialogBox.Filters.Clear
dialogBox.Filters.Add “libros de Excel”, “*.xlsx;*.xls;*.xlsm”
Este código restringe los tipos de archivos que se muestran en el selector de archivos. El asterisco ( * ) es un carácter comodín; Se mostrarán todos los archivos que terminen en .xlsx, .xlsx y .xlsm. Para agregar nuevos tipos de archivos, por ejemplo, PDF, agregue “;*.pdf” en la cadena de texto. O, para permitir todos los tipos de archivos, elimine la línea dialogbox.Filters.Add… por completo.
Una vez que el código haya sido ingresado y modificado para su escenario, cierre el Editor de Visual Basic haciendo clic en la [X] en la parte superior derecha de la ventana.
Insertar imagen de carpeta
Ahora necesitamos algo que actúe como botón. Voy a usar un ícono. Dependiendo de su versión de Excel, es posible que no tenga la función de íconos, pero puede insertar cualquier imagen o forma que desee.
Para insertar un ícono como yo, haga clic en Insertar íconos .
Busque "Carpeta" en la ventana de iconos. Seleccione el icono preferido y haga clic en Insertar.
La imagen se insertará en el anverso de la hoja de trabajo.
Mueva y cambie el tamaño de la imagen para que esté en la ubicación correcta. También he formateado el icono de la carpeta para que sea de color naranja (similar a cómo se ven las carpetas en el entorno normal de Windows).
Asignar macro a imagen
Finalmente asignamos la macro a la imagen. Haga clic derecho en la imagen y seleccione Asignar macro… en el menú.
Desde la ventana Asignar macro, haga clic en la macro selectFile (este es el nombre de la macro que creamos anteriormente), luego haga clic en Aceptar .
Pruébalo
Eso es todo. Hemos terminado. Ahora ve y pruébalo.
Conclusión
En esta publicación, hemos visto cómo crear una interfaz de usuario para seleccionar archivos. Los usuarios pueden buscar una ruta de archivo y luego insertarla en una celda. Esta es una técnica realmente útil si se utilizan parámetros de celda en Power Query.
Artículos Relacionados:
- Cambiar el origen de Power Query según un valor de celda
- Cómo corregir el error Formula.Firewall en Power Query (2 formas)
- Código VBA para copiar, mover, eliminar y administrar archivos