VBA FileDialog | Як відкрити вікно FilesDialog за допомогою коду VBA?

Excel VBA FileDialog

У VBA fieldialog - це властивість, яка використовується для представлення різних екземплярів, у filedialog є чотири різні типи констант, які відомі як msofiledialogfilepicker, що використовується для вибору файлу з заданого шляху, другий - msofiledialogfolderpicker, з якого випливає назва, використовується для вибору папка і третя - msofiledialog відкрита для відкриття файлу, а остання - msofiledialogsaveas, яка використовується для збереження файлу як нового файлу.

Існують певні обставини, коли нам потрібні дані з будь-якого іншого файлу або будь-якого іншого робочого аркуша, і оскільки VBA використовується для автоматизації нашої роботи, ми можемо відкривати різні інші файли за допомогою VBA, і це робиться за допомогою діалогового вікна Filedia, крутої частини використання цього Метод полягає в тому, що нам не потрібно вказувати шлях до коду, натомість ми просимо користувача переглядати файл.

В рамках проекту VBA нам може знадобитися відкрити інші книги та виконати з ними якесь завдання. У одній із попередніх статей “VBA Workbook.Open” ми показали, як відкривати файли із зазначеним шляхом та конкретним файлом. Там нам потрібно було вказати шлях до папки та ім’я файлу з розширенням. Але що, коли кожен раз користувачеві доводиться вибирати різні файли з різних папок. Тут з’являється опція “FileDialog”.

Як працює параметр VBA FileDialog?

“Якщо ви не знаєте точного шляху, FileDialog знайде і відбере вам файл”. Замість того, щоб згадувати адресу шляху та ім'я файлу, ми можемо представити діалогове вікно відкритого файлу, щоб вибрати файл із будь-якої папки на комп'ютері.

Завантажити цей шаблон VBA FileDialog Excel можна тут - Шаблон Excel VBA FileDialog

“FileDialog” - це об’єкт у VBA. Щоб спочатку скористатися цією опцією, нам потрібно визначити змінну як FileDialog.

Як тільки змінна оголошена як “FileDialog”, вона стає об’єктною змінною. Щоб почати використовувати це, нам потрібно встановити об'єкт за допомогою Application.FileDialog.

Як ми бачимо на малюнку вище, FileDialog має чотири варіанти.

  • msoFileDialogFilePicker: Ця опція відкриває вікно вибору файлів перед користувачем, щоб вибрати потрібний файл відповідно до його бажання.
  • msoFileDialogFolderPicker: Цей параметр відкриває діалогове вікно або вікно перед користувачем для вибору папки.
  • msoFileDialogOpen: Це дозволить користувачеві відкрити вибраний файл із папки.
  • msoFileDialogSaveAs: Це дозволить користувачеві зберегти файл як іншу копію.

На даний момент я вибрав параметр msoFileDialogFilePicker.

Тепер нам потрібно розробити діалогове вікно, яке з’явиться перед нами.

За допомогою With Statement ми можемо створити діалогове вікно.

Всередині оператора with поставте крапку, щоб побачити список властивостей і методів FileDialog у списку IntelliSense.

Щоб побачити лише файли Excel, коли відкриється діалогове вікно файлу, нам потрібно спочатку видалити будь-який із застосованих фільтрів.

Тепер нам потрібно застосувати новий фільтр як «Файли Excel» із розширенням підстановки файлів Excel.

Тепер давайте змінимо заголовок діалогового вікна файлу.

Ми можемо дозволити користувачеві вибирати лише один файл одночасно, а також ми можемо дозволити їм обирати кілька файлів. Для цього нам потрібно використовувати “Allow Multi-Select”.

У нас тут є два варіанти. Якщо вибрано TRUE, це дозволить користувачеві вибрати декілька файлів, якщо це FALSE, користувач може одночасно вибрати лише один файл.

Ще одна річ, яку ми можемо розробити за допомогою FileDialog, - це те, що ми можемо наполягати на тому, яка має бути папкою за замовчуванням, коли з’явиться діалогове вікно файлу. Для цього використовуйте Ім'я початкового файлу.

Для цього нам потрібно згадати папку за замовчуванням, яку слід відкрити, шлях до адреси.

Тепер нарешті нам потрібно застосувати метод «Показати», щоб побачити діалогове вікно файлу.

Код:

Sub DoEvents_Example1 () Dim Myfile As FileDialog Встановити Myfile = Application.FileDialog (msoFileDialogFilePicker) з Myfile. ! " .AllowMultiSelect = False .InitialFileName = "D: \ Файли Excel". Показати Кінець Кінцем Sub

Тепер запустіть код 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