VBA FileDialog

Excel VBA FileDialog

En VBA fieldialog es una propiedad que se usa para representar diferentes instancias, en filedialog hay cuatro tipos diferentes de constantes que se conocen como msofiledialogfilepicker que se usa para seleccionar un archivo de una ruta dada, el segundo es msofiledialogfolderpicker cuyo nombre sugiere que se usa para elegir una carpeta y la tercera es msofiledialog open para abrir un archivo y la última es msofiledialogsaveas que se usa para guardar un archivo como un archivo nuevo.

Hay ciertas circunstancias en las que queremos los datos de cualquier otro archivo o cualquier otra hoja de trabajo y, como VBA se usa para automatizar nuestro trabajo, podemos abrir otros archivos diferentes usando VBA y se hace usando Filedialog, la parte genial de usar este El método es que no necesitamos proporcionar la ruta al código, sino que le pedimos al usuario que explore el archivo.

Como parte del proyecto VBA, es posible que necesitemos abrir otros libros de trabajo y ejecutar algún tipo de tarea con ellos. En uno de los artículos anteriores "Libro de trabajo de VBA.Open", hemos mostrado cómo abrir archivos con una ruta específica y un archivo específico. Allí, necesitábamos proporcionar la ruta de la carpeta y el nombre del archivo con su extensión. Pero, ¿qué pasa si cada vez que un usuario tiene que seleccionar los diferentes archivos de las diferentes carpetas? Aquí es donde la opción "FileDialog" entra en escena.

¿Cómo funciona la opción VBA FileDialog?

“Si no conoce la ruta exacta, FileDialog encontrará y seleccionará el archivo”. En lugar de mencionar la dirección de la ruta y el nombre del archivo, podemos presentar una ventana de diálogo de apertura de archivo por separado para seleccionar el archivo de cualquier carpeta de la computadora.

Puede descargar esta plantilla de Excel de VBA FileDialog aquí - Plantilla de Excel de VBA FileDialog

"FileDialog" es un objeto en VBA. Para usar esta opción, primero necesitamos definir la variable como FileDialog.

Una vez que la variable se declara como "FileDialog", es una variable de objeto. Para comenzar a usar esto, necesitamos configurar el objeto usando Application.FileDialog.

Como podemos ver en la imagen de arriba, FileDialog tiene cuatro opciones.

  • msoFileDialogFilePicker: Esta opción abre la ventana del selector de archivos frente al usuario para seleccionar el archivo deseado según su deseo.
  • msoFileDialogFolderPicker: esta opción abre el cuadro de diálogo o la ventana frente al usuario para seleccionar la carpeta.
  • msoFileDialogOpen: Esto permitirá al usuario abrir el archivo seleccionado de la carpeta.
  • msoFileDialogSaveAs: Esto permitirá al usuario guardar el archivo como una copia diferente.

A partir de ahora, he seleccionado la opción de msoFileDialogFilePicker.

Ahora tenemos que diseñar el cuadro de diálogo que aparece frente a nosotros.

Usando Con Statement podemos diseñar el cuadro de diálogo.

Dentro de la instrucción, coloque un punto para ver la lista IntelliSense de las propiedades y métodos de la opción FileDialog.

Para ver solo los archivos de Excel cuando se abre el cuadro de diálogo del archivo, primero debemos eliminar cualquiera de los filtros aplicados.

Ahora necesitamos aplicar un nuevo filtro como "Archivos de Excel" con la extensión comodín de los archivos de Excel.

Ahora cambiemos el título del cuadro de diálogo del archivo.

Podemos permitir que el usuario seleccione solo un archivo a la vez o también podemos permitirle que seleccione varios archivos. Para ello, debemos utilizar "Permitir selección múltiple".

Tenemos dos opciones aquí. Si se selecciona VERDADERO, permitirá al usuario seleccionar varios archivos si es FALSO el usuario puede seleccionar sólo un archivo a la vez.

Otra cosa que podemos diseñar con FileDialog es que en realidad podemos insistir en cuál debería ser la carpeta predeterminada cuando aparece el cuadro de diálogo del archivo. Para ello, utilice el nombre de archivo inicial.

Para esto, debemos mencionar la carpeta predeterminada para abrir la ruta de dirección.

Ahora, finalmente, debemos aplicar el método "Mostrar" para ver el cuadro de diálogo del archivo.

Código:

Sub DoEvents_Example1 () Atenuar Myfile como FileDialog Establecer Myfile = Application.FileDialog (msoFileDialogFilePicker) Con Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "¡Elija su archivo de Excel! ! " .AllowMultiSelect = False .InitialFileName = "D: \ Archivos de Excel" .Mostrar final con End Sub

Ahora ejecute el código VBA para ver el resultado.

Como podemos ver en el cuadro de diálogo del archivo de imagen anterior se ha abierto la carpeta mencionada por defecto.

Ahora podemos seleccionar cualquier subcarpeta y seleccionar los archivos de Excel.

Mire la imagen de arriba porque hemos aplicado el parámetro de filtro como "Archivos de Excel" solamente.

Esto solo seleccionará el archivo de la carpeta mencionada. Para almacenar la ruta completa, necesitamos declarar una variable más como una cadena.

Ahora, dentro de la declaración with, seleccione "SelectedItems". Asigne la ruta de la carpeta de elementos seleccionados a la variable recién definida.

Ahora, finalmente, muestre la ruta de la carpeta seleccionada en el cuadro de mensaje de VBA.

Ahora ejecutaré el programa para ver el cuadro de diálogo.

Ahora he seleccionado el nombre del archivo como “1. Charts.xlsx ”en la subcarpeta“ Charts ”. Si hago clic en Aceptar, podemos ver la ruta completa de la carpeta en el cuadro de mensaje.

Entonces, así, podemos usar la opción FileDialog para seleccionar los archivos de la carpeta en Excel. Utilice el siguiente código para seleccionar los archivos.

Código:

Sub DoEvents_Example1 () Atenuar Myfile como FileDialog Establecer Myfile = Application.FileDialog (msoFileDialogFilePicker) Atenuar FileAddress como cadena con Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Elija su ¡¡¡Archivo Excel!!!" .AllowMultiSelect = False .InitialFileName = "D: \ Archivos de Excel" .Mostrar FileAddress = .SelectedItems (1) Terminar con MsgBox FileAddress End Sub