Перейти к содержимому

VBA Excel. Стандартный диалог выбора файлов Application.GetOpenFilename

Выбор файлов в 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 

Имя диска может быть любым, в зависимости от имеющегося на вашем компьютере.

Добавить комментарий