Діалогове вікно вибору файлів

Діалог вибору файлів Applicaton.GetOpenFileName
параметри:
Application.GetOpenFilename ([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect])
По суті я часто використовую саме його, тому що це універсальний метод і в ньому є все, що особисто мені необхідно: вибрати певні типи файлів дозволяє, можливість запобігти вибору декількох файлів відразу є.

Вказуються типи файлів, які будуть відображатися в діалоговому вікні вибору. Наприклад, якщо вказати "Excel files (*. Xls *), *. Xls *", то можливо буде вибрати тільки файли Excel (з розширенням, що починається на .xls - .xls. Xlsx. Xlsb. Xlsm і т.д.) . Якщо вказати "Text files (*. Txt), *. Txt", то можна буде вибрати тільки текстові файли з розширенням .txt. Так само можна вказати більше одного типу розширень: "Excel files (*. Xls *), *. Xls *, Text files (*. Txt), *. Txt". За замовчуванням тип файлів в діалоговому вікні буде належати першому зазначеного типу файлів (*. Xls *). Але можна вказати будь-який з перерахованих типів за допомогою аргументу FilterIndex. Так само можна вказати вибір будь-яких типів файлів: "All files (*. *), *. *"

Якщо аргументом FileFilter вказано більше одного типу файлів (розширень), то цей аргумент вказує який саме тип використовувати. Наприклад, наступний рядок за замовчуванням призначає вибір текстових типів файлів:

У доданому до статті файлі наведено дві процедури з використанням цього типу діалогу і обробкою файлів з параметром MultiSelect. встановленим в True і False.

Діалог вибору файлів FileDialog (msoFileDialogFilePicker)

У цього діалогу теж є параметри і вони дуже схожі з такими в Application.GetOpenFilename:
Нижче в статті приклад коду із застосуванням всіх описаних параметрів

Вказує, може бути обраний лише один файл або декілька:

  • True - можна буде вибрати більше одного файлу для обробки (через Shift або Ctrl або простим виділенням мишею всередині вікна)
  • False - ви можете обрати лише один файл

Текст заголовка діалогового вікна. Якщо вказати "Вибрати текстові або Excel файли", то саме цей текст буде в заголовку. Якщо не вказувати, то буде текст за замовчуванням (щось на кшталт "Відкриття документа")

Перераховуються типи файлів, які будуть відображатися в діалоговому вікні вибору. Для додавання типу файлу (розширення) необхідно використовувати метод Add:
.Filters.Add ([Description], [Extensions], [Position])

  • Description - опис типу файлів. Довільний текст, який вказує тип файлів. Наприклад "Малюнки" або "Файли Excel".
  • Extensions - розширення файлів. Безпосередньо перед розширенням обов'язково повинна стояти зірочка і точка: * .xls. Інакше діалог видасть помилку. Для перерахування кількох розширень використовується роздільник у вигляді точки-з-коми: "* .xls *; *. Xla *" або "* .xls; *. Xlsx; *. Xlsm". Зірочка після розширення замінює будь-який набір символів або жодного. Наприклад, при вказівці "* .xls *" буде можливим вибрати будь-які файли, розширення яких починається на .xls. xls, .xlsx, .xlsm, .xlsb і т.д. але не можна буде вибрати файли з розширенням .xla, .xlam і тим більше .doc або .txt. Якщо необхідно здійснити вибір будь-якого типу файлів, то необхідно просто очистити фільтр і не додавати ніякі типи. Filters.Clear
  • Position - вказує, яким за рахунком в списку буде тип файлів. На малюнку нижче першим йде тип "Excel files", а другим "Text files":
    Діалогове вікно вибору файлів

Тип файлів, який буде показаний за замовчуванням при виклику діалогу визначається властивістю FilterIndex діалогу FileDialog.
Важливий момент: діалог, викликаний в одному сеансі Excel зберігає додані раніше типи файлів. Тому перед призначенням нових типів необхідно виконати очистку фільтра:
.Filters.Clear

Кожен новий тип файлів додається новим Add:

Я особисто не рекомендую вказувати ім'я файлу, тому що після показу діалогу цей файл автоматично буде обраний, що не завжди буває правильним. Але все залежить від завдань. Якщо користувач не вибере самостійно жодного файлу, то відповіддю діалогу буде саме файл з вказаним ім'ям (Кніга1.xlsx). Якщо такого файлу не виявиться в папці, то діалог видасть попередження, що такого файлу немає.

Даний параметр визначає зовнішній вигляд і структуру вікна діалогу. Доступно 9 варіантів:

  • msoFileDialogViewDetails
  • msoFileDialogViewLargeIcons
  • msoFileDialogViewList
  • msoFileDialogViewPreview
  • msoFileDialogViewProperties
  • msoFileDialogViewSmallIcons
  • msoFileDialogViewThumbnail
  • msoFileDialogViewTiles
  • msoFileDialogViewWebView

При використанні даного параметра слід враховувати, що на різних операційних системах можуть бути доступні не всі варіанти. Тому перш ніж використовувати краще переконатися, що на кінцевих ПК підтримується вказаний тип. В принципі нічого страшного не станеться - буде просто показано вікно з видом за замовчуванням. Але куди правильніше в розробці дотримуватися однотипного виду на всіх ПК.

Повертає колекцію вибраних файлів. На відміну від Application.GetOpenFilename завжди повертається масив рядків, тому можна завжди використовувати цикл для відкриття файлів, навіть якщо параметр AllowMultiSelect встановлений в False:

Даний параметр визначає зовнішній вигляд і структуру вікна діалогу. Доступно 9 варіантів:

  • msoFileDialogViewDetails
  • msoFileDialogViewLargeIcons
  • msoFileDialogViewList
  • msoFileDialogViewPreview
  • msoFileDialogViewProperties
  • msoFileDialogViewSmallIcons
  • msoFileDialogViewThumbnail
  • msoFileDialogViewTiles
  • msoFileDialogViewWebView

При використанні даного параметра слід враховувати, що на різних операційних системах можуть бути доступні не всі варіанти. Тому перш ніж використовувати краще переконатися, що на кінцевих ПК підтримується вказаний тип. В принципі нічого страшного не станеться - буде просто показано вікно з видом за замовчуванням. Але куди правильніше в розробці дотримуватися однотипного виду на всіх ПК.

Повертає колекцію з одним елементом, в якому міститься шлях до папки. Нумерація рядків в SelectedItems завжди починається з 1, але тому що вибір декількох папок неможливий, то завжди вказується 1: x = .SelectedItems (1)

Призначає текст кнопки, якій підтверджується вибір папки. Може містити не більше 51 знака (чого як правило досить).

Метод, який викликає показ діалогу з вибраними параметрами. Повертає відповідь у вигляді цілого числа:

  • -1 - папка обрана і натиснута кнопка Відкрити
  • 0 - була натиснута кнопка скасування

Це можна (точніше потрібно!) Використовувати, щоб не продовжувати виконання коду, якщо натиснута кнопка Скасування: