Ф ункции для работы с файловой системой

В VBA предусмотрен набор встроенных функций для выполнения различных операций с файлами, каталогами, дисками и прочими объектами файловой системы. Информация об этих функциях приведена далее. Но не забывайте, что помимо этих функций (общих для всех приложений, в которых используется VBA) у нас есть, во-первых, возможности, специфические для данного приложения (например, открытие и сохранение документа Word средствами объектной модели Word). Во-вторых, на любом компьютере под управлением Windows есть объектная библиотека Microsoft Scripting Runtime, очень простая и удобная для выполнения различных операций с файлами, каталогами и дисками. Можно добавить в проект VBA ссылку на нее и использовать все имеющиеся в ней возможности. Если, к примеру, мне нужно пройтись по всем файлам в данном каталоге и что-нибудь с ними сделать (например, загрузить в Excel все файлы отчетов, которые пришли из филиалов), я использую именно эту библиотеку. Справку по ней можно найти на сайте Microsoft (www.microsoft.com/scripting).

Далее приведены встроенные функции для работы с файловой системой, предусмотренные в VBA.

- CurDir() — функция, которая возвращает путь к текущему каталогу, в котором будут сохраняться файлы вашего приложения по умолчанию.

- Dir() — позволяет искать файл или каталог по указанному пути на диске.

- EOF() — при операции чтения или записи в файл на диске эта функция вернет True, если вы находитесь в конце файла.

- Error() — позволяет вернуть описание ошибки по ее номеру. Генерировать ошибку нужно при помощи метода RaiseError() специального объекта Err.

- FileAttr() — позволяет определить, как именно был открыт вами файл в файловой системе: на чтение, запись, добавление, в двоичном или текстовом режиме и т. п.

- FileDateTime() — позволяет получить информацию о последнем времени обращения к указанному вами файлу. Если к файлу после создания ни разу не обращались, то функция вернет время создания файла.

- FileLen() — возвращает длину указанного вами файла в байтах.

- FreeFile() — позволяет определить следующую свободную цифру, которую можно использовать как номер файла при его открытии.

- GetAttr() — позволяет обратиться к файлу и получить информацию о его атрибутах (скрытый, доступен только для чтения, архивный и т. п.).

- Input() — позволяет считать информацию из открытого файла. Например, считать информацию из файла C:\text1.txt и вывести ее в окно сообщений можно так:

Dim MyChar

'Открываем файл функцией Open() на чтение

Open "c:\text1.txt" For Input As #1

Do While Not EOF(1) ' Пока файл не кончился,

' получаем по одному символу и добавляем его к предыдущим

MyChar = MyChar & Input(1, #1)

Loop

Close #1 'Закрываем файл

MsgBox MyChar 'Выводим его содержание в окно сообщения

Вариант этой функции — InputB() — позволяет указать количество байт, которые надо считать из файла.

- Loc() — от Location (местонахождение) — возвращает число, которое определяет текущее место вставки или чтения в открытом файле. Похоже работает функция Seek(), но она возвращает информацию о позиции, с которой будет выполняться следующая операция чтения или вставки.

- LOF() — от length of file — позволяет определить длину открытого файла в байтах.

- Open — это не функция, а команда VBA, но без нее операции чтения и записи с файлами на диске не произвести. Справку по ней можно найти по словосочетанию "Open Statement". Как минимум, ей нужно передать имя открываемого файла, режим открытия и номер файла (номер файла — это его идентификатор для передачи другим функциям, его назначаете вы сами). Например, чтобы открыть файл на чтение с возможностью одновременного обращения к нему других пользователей, можно использовать код вида:

Open "с:\file1.txt" For Output Shared As #1


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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