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.

Solución de ejemplo: versión final

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.

Seleccione Archivo en el cuadro de diálogo Abrir archivo: busque la ruta del archivo

La ruta del archivo ahora se inserta en la celda C3 .

Solución de ejemplo: ruta de archivo actualizada

Si estás aquí para descubrir cómo hacerlo tú mismo, entonces estás en el lugar correcto.

Índice
  1. Construyendo la solución
    1. Crear un rango con nombre
    2. La macro VBA
    3. Insertar imagen de carpeta
    4. Asignar macro a imagen
    5. Pruébalo
  2. Conclusión

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.

  1. Seleccione la celda que contiene la ruta del archivo
  2. En el cuadro de nombre, escriba filePath y presione Enter
    Crear rango con nombre

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 .

Desarrollador - Visual Basic

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ú.

Crear un nuevo módulo

Se abre un nuevo módulo de código. Ingrese el siguiente código en el módulo de código

Ingrese el 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 .

Insertar icono

Busque "Carpeta" en la ventana de iconos. Seleccione el icono preferido y haga clic en Insertar.

Insertar icono de carpeta

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ú.

Asignar macro

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 .

Seleccionar archivo - 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

Este sitio utiliza cookies para una mejor experiencia - Mas información