В 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