double arrow

Работа с файлами


Программы, написанные на 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.







Сейчас читают про: