Программы, написанные на VBA, умеют работать с внешними файлами. В частности, на практике могут возникнуть задачи по поиску файлов в директориях, по открытию, обработке, сохранению файлов. Открытие, обработка, сохранение - дело отдельных приложений (например, MS Word, MS Excel) - то есть эти задачи решаются с помощью объектных моделей этих приложений. А вот поиск файлов осуществляется общими для всех методами VBA.
Как правило, чтобы открыть файл, нужно знать его имя. Иными словами, поиск файлов заключается в получении имен файлов, находящихся в определенной директории. Для этого можно использовать команду Dir. Она возвращает строку, содержащую имя файла, используя путь, заданный при вызове. Давайте рассмотрим конструкцию (листинг 7.23.), которая позволяет найти все файлы, находящиеся в корневой директории диска C.
var_Doc = Dir("C:\*.*")
Do While var_Doc <> ""
MsgBox var_Doc
var_Doc = Dir()
Loop
Сначала мы присваиваем переменной var_Doc первое найденное имя файла. Очевидно, что узнав имя файла, мы можем сказать, что нашли этот файл на диске. В самом простом варианте использования функции Dir в качестве параметров мы передаем ей путь и маску имени файла. Знак * в маске означает любое количество любых символов. Следовательно, *.* означает "все файлы" - то есть файлы с любыми именами и любыми расширениями. В маске можно так же использовать знак? - он символизирует один любой символ. Если не указать путь к файлам, а лишь маску - Dir будет искать их в текущей директории. Например, для Microsoft Word по умолчанию это папка Мои документы.
|
|
Помимо пути и маски при поиске файлов можно указать некоторые дополнительные параметры. Так, по умолчанию функция ищет лишь обычные файлы, не обращая внимания на папки, скрытые и системные файлы. Чтобы функция нашла по заданному пути не только файлы, но и папки, ее нужно вызвать так:
var_Doc = Dir("C:\*.*", vbDirectory)
Обратите внимание на то, что после пути и маски указан параметр vbDirectory - он указывает функции, что она должна включить в поиск и директории.
После того, как первое найденное имя присвоено переменной, мы запускаем цикл с предусловием, в котором проверяем, не пуста ли эта переменная. Если Dir не обнаружил по указанному пути ничего подходящего под заданную маску, он возвратит, пустую строку. Следовательно, цикл в таком случае не выполнится ни разу.
В цикле есть две строки. Первая выводит найденное имя на экран, а вторая - вызывает функцию Dir еще раз - без параметров. Такой вызов возвращает следующее имя файла, подходящее под заданный при первом вызове Dir шаблон. После этого все повторяется. В реальной программе в такой цикл можно вставить команды для работы с найденными файлами.
|
|
Помимо Dir полезной может оказаться команда ChDir. Она позволяет перейти в указанную при ее вызове директорию, которая будет использоваться в качестве директории по умолчанию. Такая конструкция, предшествующая циклу из предыдущего примера позволит найти все файлы в папке "Документы", которая расположена по пути "C:\Документы":
ChDir ("C:\Документы")
var_doc = Dir("*.*")
Существует множество других функций работы с файлами, вы можете найти информацию о них в справочной системе VBA.