Файлові функції VBA, Input (), FileLen (), EOF (), LOF (), Loc ()
У VBA передбачений набір вбудованих функцій для виконання різних операцій з файлами, каталогами, дисками і іншими об'єктами файлової системи. Інформація про ці функції наведено нижче. Але не забувайте, що крім цих можливостей (загальних для всіх додатків, в яких використовується VBA) у нас є також, по-перше, можливості, специфічні для даного додатка (наприклад, відкриття і збереження документа Word засобами об'єктної моделі Word). По-друге, на будь-якому комп'ютері під керуванням Windows є об'єктна бібліотека під назвою Microsoft Scripting Runtime - дуже проста і дуже зручна для виконання різних операцій з файлами, каталогами та дисками. Можна додати в проект VBA на неї посилання і використовувати всі наявні в ній можливості. Якщо, наприклад, мені потрібно пройти по всіх файлів в даному каталозі і що-небудь з ними зробити (наприклад, завантажити в Excel всі файли звітів, які прийшли з філій), я використовую саме цю бібліотеку. Довідку по ній можна знайти на сайті Microsoft (www.microsoft.com/scripting).
А це - вбудовані функції для роботою з файлової системою, передбачені в VBA:
- CurDir () - функція, яка повертає шлях до поточного каталогу, в якому будуть зберігатися файли нашого зі стандартними програмами.
- Dir () - дозволяє шукати файл або каталог за вказаною шляху на диску.
- EOF () - при операції запису в файл на диску цю функція поверне True, якщо ви перебуваєте в кінці файлу. Використовується при записі в файл свого власного формату. При збереженні документів Word, книг Excel і т.п. краще використовувати стандартні методи об'єктів цих документів: Save і SaveAs ().
- Error () - дозволяє повернути опис помилки по її номеру. Генерувати помилку потрібно за допомогою методу RaiseError () спеціального об'єкта Err (див. Розділ 6, в якій розповідається про перехоплення помилок і налагодження).
- FileAttr () - дозволяє визначити, як саме був відкритий вами файл в файловій системі: на читання, запис, додавання, в двійковому або текстовому режимі і т.п.
- FileDateTime () - дозволяє отримати інформацію про останній час звернення до зазначеного вами файлу. Якщо до файлу після створення жодного разу не зверталися, то це буде час створення файлу.
- FileLen () - дозволяє визначити довжину зазначеного вами файлу в байтах.
- FreeFile () - дозволяє визначити наступну вільну цифру, яку можна використовувати як номер файлу при його відкритті.
- GetAttr () - можливість звернутися до файлу до файлової системи і отримати інформацію про його атрибутах (прихований, доступний тільки для читання, архівний і т.п.)
- Input () - дозволяє вважати інформацію з відкритого файлу. Наприклад, вважати інформацію з файлу C: \ text1.txt і вивести її в вікно Immediate можна так:
Open "c: \ text1.txt" For Input As # 1 'Відкриваємо файл функцією Open () на читання
Do While Not EOF (1) 'поки файл не скінчився
'Отримуємо по одному символу і додаємо його до попередніх
MyChar = MyChar Input (1, # 1)
Close # 1 'Закриваємо файл
- Варіант цієї функції - InputB () дозволяє вказувати кількість байт, які треба завантажити з файлу.
- Loc () - від Location, тобто місцезнаходження - повертає число, яке визначає поточне місце вставки або читання у відкритому файлі. Схоже працює функція Seek (). але вона повертає інформацію про позиції, з якої буде виконуватися наступна операція читання або вставки.
- LOF () - від length of file - дозволяє визначити довжину відкритого файлу в байтах.