Диалог файлов Excel VBA
В VBA fieldialog - это свойство, которое используется для представления различных экземпляров, в filedialog есть четыре разных типа констант, которые известны как msofiledialogfilepicker, который используется для выбора файла по заданному пути, второй - msofiledialogfolderpicker, имя которого предполагает, используется для выбора папка, третья - msofiledialog, открытая для открытия файла, и последняя - msofiledialogsaveas, которая используется для сохранения файла как нового файла.
Существуют определенные обстоятельства, при которых нам нужны данные из любого другого файла или любого другого рабочего листа, и поскольку VBA используется для автоматизации нашей работы, мы можем открывать другие другие файлы с помощью VBA, и это делается с помощью Filedialog, крутой части использования этого Метод заключается в том, что нам не нужно указывать путь к коду, вместо этого мы просим пользователя просмотреть файл.
В рамках проекта VBA нам может потребоваться открыть другие книги и выполнить с ними какую-то задачу. В одной из предыдущих статей «VBA Workbook.Open» мы показали, как открывать файлы с указанным путем и конкретным файлом. Здесь нам нужно было указать путь к папке и имя файла с его расширением. Но что, если каждый раз пользователю приходится выбирать разные файлы из разных папок. Здесь появляется опция «FileDialog».
Как работает опция VBA FileDialog?
«Если вы не знаете точный путь, FileDialog найдет и выберет вам файл». Вместо указания адреса пути и имени файла мы можем отдельно представить диалоговое окно открытия файла, чтобы выбрать файл из любой папки на компьютере.
Вы можете скачать этот шаблон VBA FileDialog для Excel здесь - Шаблон VBA FileDialog для Excel«FileDialog» - это объект в VBA. Чтобы использовать эту опцию, сначала нам нужно определить переменную как FileDialog.
Как только переменная объявлена как «FileDialog», она становится объектной переменной. Чтобы начать использовать это, нам нужно установить объект с помощью Application.FileDialog.
Как мы видим на картинке выше, FileDialog имеет четыре варианта.
- msoFileDialogFilePicker: эта опция открывает окно выбора файлов перед пользователем, чтобы выбрать нужный файл по их желанию.
- msoFileDialogFolderPicker: этот параметр открывает диалоговое окно или окно перед пользователем для выбора папки.
- msoFileDialogOpen: это позволит пользователю открыть выбранный файл из папки.
- msoFileDialogSaveAs: это позволит пользователю сохранить файл как другую копию.
На данный момент я выбрал вариант msoFileDialogFilePicker.
Теперь нам нужно создать диалоговое окно, которое появляется перед нами.
Используя оператор With, мы можем создать диалоговое окно.
Внутри оператора with поставьте точку, чтобы увидеть список IntelliSense свойств и методов параметра FileDialog.
Чтобы видеть только файлы Excel при открытии диалогового окна файла, нам нужно сначала удалить любой из примененных фильтров.
Теперь нам нужно применить новый фильтр «Файлы Excel» с расширением подстановочных знаков для файлов Excel.
Теперь давайте изменим заголовок диалогового окна файла.
Мы можем позволить пользователю выбирать только один файл за раз, или мы также можем позволить им выбирать несколько файлов. Для этого нам нужно использовать «Разрешить множественный выбор».
У нас есть два варианта. Если выбрано TRUE, это позволит пользователю выбрать несколько файлов, если FALSE пользователь может выбрать только один файл за раз.
Еще одна вещь, которую мы можем разработать с помощью FileDialog, - это то, что мы действительно можем настаивать на том, какая папка должна быть по умолчанию, когда появляется диалоговое окно файла. Для этого используйте исходное имя файла.
Для этого нам нужно указать папку по умолчанию для открытия адресного пути.
Теперь, наконец, нам нужно применить метод «Показать», чтобы увидеть диалоговое окно файла.
Код:
Sub DoEvents_Example1 () Dim Myfile As FileDialog Установите Myfile = Application.FileDialog (msoFileDialogFilePicker) с помощью Myfile .Filters.Clear .Filters.Add «Файлы Excel», «* .xlsx?», 1 .Title = «Выберите свой файл Excel !! ! " .AllowMultiSelect = False .InitialFileName = "D: \ Excel Files". Показать конец с концом подпрограммы
Теперь запустите код VBA, чтобы увидеть результат.
Как видно из приведенного выше диалогового окна файла изображения, указанная папка по умолчанию открыта.
Теперь мы можем выбрать любую подпапку и выбрать файлы Excel.
Посмотрите на изображение выше, потому что мы применили параметр фильтра только как «Файлы Excel».
Это просто выберет файл из указанной папки. Чтобы сохранить полный путь, нам нужно объявить еще одну переменную в виде строки.
Now inside the with statement select “SelectedItems”. Assign the selected items folder path to the newly defined variable.
Now finally show the selected folder path in the VBA message box.
Now I will run the program to see the dialogue box.
Now I have selected the File Name as “1. Charts.xlsx” in the subfolder “Charts”. If I click on OK, we can see the full folder path in the message box.
So, like this, we can use the FileDialog option to select the files from the folder in Excel. Use below code to select the files.
Code:
Sub DoEvents_Example1() Dim Myfile As FileDialog Set Myfile = Application.FileDialog(msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "*.xlsx?", 1 .Title = "Choose Your Excel File!!!" .AllowMultiSelect = False .InitialFileName = "D:\Excel Files" .Show FileAddress = .SelectedItems(1) End With MsgBox FileAddress End Sub