VBA Excel. Стандартный диалог выбора файлов GetOpenFilename
Опубликовано: 01.09.2018
Выбор файлов в VBA Excel. Стандартный диалог Application.GetOpenFilename. Стартовая папка диалога выбора файлов.
Открытие диалога выбора файлов
Открытие диалога для выбора любого файла и записи его полного имени в ячейку «А1»:
Private Sub CommandButton1_Click() Range("A1") = Application.GetOpenFilename End SubВ процессе выполнения этого кода VBA Excel открывается диалог с заголовком по умолчанию «Открытие файла» и возможностью выбора любого файла. При нажатии на кнопку «Открытие» полное имя выбранного файла запишется в ячейку «А1». При нажатии на кнопку «Отмена» или кнопку закрытия формы в ячейку «А1» запишется строка «Ложь».
Открытие диалога с заголовком «Выбор файла»:
Private Sub CommandButton1_Click() Range("A1") = Application.GetOpenFilename (, , "Выбор файла") End SubОткрытие диалога выбора файлов с указанием одного фильтра:
Private Sub CommandButton1_Click() Range("A1") = Application.GetOpenFilename ("Файлы Excel 97-2003,*.xls", , "Выбор файла") End SubФильтр в этом коде VBA Excel представляет из себя пару: наименование фильтра и строка из знака подстановки «*» с расширением отбираемых файлов, разделенных «,». В данном случае в открытом диалоге будут видны файлы с расширением «.xls». Таких пар может быть несколько, как в следующем примере.
Открытие диалога выбора файлов с указанием трех фильтров файлов:
Private Sub CommandButton1_Click() Range("A1") = Application.GetOpenFilename _ ("Файлы Excel 97-2003,*.xls,Текстовые файлы,*.txt,Рисунки,*.jpg", , "Выбор файла") End SubВыбрать один из фильтров можно из раскрывающегося списка диалога выбора файлов «Тип файлов».
Для справки:
Application.GetOpenFilename («Фильтры», номер, «Заголовок диалога»)
Номер - номер по порядку фильтра в списке, отображаемого по умолчанию. Если номер отсутствует или превышает количество фильтров, то по умолчанию отображается первый в списке.
Стартовая папка диалога выбора файлов
При открытии стандартного диалога выбора файлов «Application.GetOpenFilename» по умолчанию, как стартовая, выбирается папка «Мои документы» в Windows XP, «Документы» в Windows 8, но, при желании, можно задать, как стартовую, и любую другую папку.
Для этого можно воспользоваться операторами ChDrive (смена текущего диска) и ChDir (смена текущего каталога). По умолчанию текущим является диск «С» в Windows XP, поэтому, если ваша папка находится на этом диске, то ChDrive можно пропустить.
Пример 1
Проверяем, какая папка является стартовой по умолчанию. При вызове процедуры из первого примера диалог откроется именно на этой папке. Если выбрать файл, в ячейку «А1» запишется полный путь к нему, иначе, при отмене выбора, запишется «Ложь».
Private Sub CommandButton1_Click() Range("A1") = Application.GetOpenFilename End SubПример 2
В этом примере кода VBA Excel стартовой назначается папка «D:\Новая папка». Если пропустить оператор «ChDrive «D», то по умолчанию стартовой все-равно останется папка «Мои документы».
Private Sub CommandButton1_Click() 'Смена текущего диска: ChDrive "D" 'Смена текущего каталога: ChDir "D:\Новая папка" Range("A1") = Application.GetOpenFilename End SubПример 3
Здесь стартовой назначается папка, в которой расположен исходный файл EXCEL с кодом.
Private Sub CommandButton1_Click() 'Смена текущего диска: ChDrive Left(ThisWorkbook.Path, 1) 'Смена текущего каталога: ChDir ThisWorkbook.Path Range("A1") = Application.GetOpenFilename End SubИмя диска может быть любым, в зависимости от имеющегося на вашем компьютере.