Excel. Трюки и эффекты - [18]

Шрифт
Интервал

Инструкции последовательного доступа

Описание инструкций последовательного доступа, используемых для работы с файлами, приведено в табл. 1.11.

Таблица 1.11. Инструкции последовательного доступа к файлу

Ниже приведен пример использования данной функции для считывания из файла первых 10 символов:

Sub WriteToFile()

Open «D:\MyTextFile.txt» For Output As 1

' Запись данных в файл

Write #1, «Значение», «Value», 154.32

Print #1, «Слово1», «Слово2», 14.28464

Close 1

End Sub

Далее целесообразно привести пример процедуры, в которой осуществляется чтение записанных данных из файла:

Sub ReadFromFile()

Dim strVal1, strVal2, dblNumber

Dim strString

Open «D:\MyTextFile.txt» For Input As 1

' Чтение данных из файла

Input #1, strVal1, strVal2, dblNumber

Line Input #1, strString

Close 1

End Sub

Кроме приведенных в табл. 1.11 инструкций, в VBA имеется встроенная функция Input, позволяющая считывать из файла заданное количество символов:

Input(Количество_символов, [#]Дескриптор)

Ниже приведен пример использования данной функции для считывания из файла первых 10 символов:

Sub TestInput()

Dim strText As String

Open «D:\MyTextFile.txt» For Input As 1

" Чтение из файла первых 10 символов

strText = input(10, 1)

Close 1

End Sub

Инструкции произвольного доступа

При произвольном (Random) доступе файл представляется как совокупность записей, имеющих постоянную длину. Именно запись при данном типе доступа является элементарной единицей информации, которую можно считывать из файла или записывать в файл. Каждая запись имеет свой номер (нумерация начинается с единицы). Для работы с файлами при использовании произвольного доступа в VBA реализованы инструкции Put и Get для записи и чтения информации:

Put [#]Дескриптор, [Номер_записи], Переменная

Get [#]Дескриптор, [Номер_записи], Переменная

При выполнении инструкции Put значение переменной Переменная помещается в файл на место записи с номером Номерзаписи. Если номер записи не указывается, то данные помещаются в текущую запись файла.

Инструкция Get позволяет считать значение записи с номером Номерзаписи в переменную Переменная. Если номер записи не указан, то считывается текущая запись файла.

Рассмотрим пример, в котором две структуры сначала записываются в файл с помощью инструкции Put, а потом считываются из того же файла, но в обратном порядке:

Type Record

intVal As Integer

strName As String * 100

End Type

Sub TestRandomAccess()

Dim rec1 As Record, rec2 As Record

' Заполнение rec1 и rec2 значениями ...

Open «D:\MyRandomAccessFile.txt» For Random Access Read Write _

As 1 Len = Len(rec1)

' Запись данных в файл

Put 1, , rec1

Put 1, , rec2

' Теперь считывание данных из файла

Get 1, 2, rec2

Get 1, 1, rec1

Close 1

End Sub

Инструкции бинарного доступа

Бинарный (Binary) доступ к файлу по своей сути идентичен произвольному доступу с тем лишь различием, что запись в файле имеет длину 1 байт. При бинарном доступе к файлу используются те же инструкции Put и Get, что и при произвольном доступе. Также при бинарном доступе для чтения определенного количества байт может быть использована функция Input, о которой было рассказано выше.

Определение конца файла

На практике часто приходится сталкиваться с необходимостью чтения данных из файла, размер которого заведомо неизвестен. Если достигается конец файла, а после этого производится попытка прочитать из него данные, то генерируется ошибка. Для предотвращения подобных ситуаций можно использовать функции EOF и LOF:

EOF(Дескриптор)

LOF(Дескриптор)

Функция EOF возвращает значение True, если достигнут конец файла, заданного параметром Дескриптор, и False – в противном случае. Если функция EOF возвратила значение False, то читать из файла больше нельзя. Для файлов, открытых в режиме Output, функция EOF всегда возвращает значение True.

Функция LOF позволяет узнать длину файла, заданного параметром Дескриптор. Эта функция возвращает значение типа Long, отражающее длину открытого файла в байтах.

Определение текущей позиции файла

Для определения текущей позиции файла в VBA предусмотрены функции Loc и Seek, имеющие следующий формат:

Loc(Дескриптор)

Seek(Дескриптор)

Обе функции возвращают значение текущей позиции файла, заданного параметром Дескриптор. Однако каждая из этих функций имеет свои особенности.

Функция Loc для файлов, открытых в режиме Random, возвращает номер последней считанной или записанной записи. Для файлов, открытых в режиме Binary, – номер последнего считанного или записанного байта. Для файлов, открытых в режиме последовательного доступа, – текущую позицию в байтах, деленную на 128.

Функция Seek для файлов, открытых в режиме Random, возвращает номер записи, которая будет считана из файла или записана в файл при следующей операции чтения/записи. Для остальных файлов эта функция возвращает номер байта, с которого будет начинаться следующая операция чтения или записи.

Стандартные окна сообщений

Для вывода информации пользователю в арсенале VBA есть очень удобная функция MsgBox. Она позволяет отображать стандартное окно с сообщением (например, об ошибке). Функция MsgBox имеет следующий формат:

MsgBox(Текст_сообщения[, Стиль] [, Заголовок] [, Файл_справки, Индекс_темы])


Еще от автора Алексей Анатольевич Гладкий
Компьютер для бухгалтера

Современного бухгалтера невозможно представить без компьютера. Но для уверенной работы нужно уметь пользоваться не только бухгалтерскими программами, но и многими другими. Здесь вы найдете много полезной информации, изложенной легким и доступным языком и подкрепленной большим количеством практических примеров, характерных именно для работы бухгалтера.


1С: Бухгалтерия 8.2. Понятный самоучитель для начинающих

Автоматизация бухгалтерского учета является одной из ключевых задач, стоящих перед руководством каждого предприятия. Время диктует свои условия, и уже давно дебет с кредитом вручную никто не сводит: такой учет громоздок, неповоротлив, медлителен, отличается трудоемкостью и изобилует ошибками. В этой книге мы будем рассматривать одно из наиболее популярных типовых решений системы 1С – конфигурацию «Бухгалтерия предприятия», реализованную на платформе 1С версии 8.2. Этот релиз является самым актуальным на момент написания данной книги.В результате изучения данной книги вы приобретете все необходимые знания для полноценной работы с программой «1С Бухгалтерия 8», научитесь выполнять в ней привычные бухгалтерские операции (работа с документами, формирование проводок, формирование отчетности и др.), самостоятельно создавать и подключать информационные базы, а также подготавливать программу к работе.


Как защитить компьютер от ошибок, вирусов, хакеров

Реалии сегодняшнего дня таковы, что для успешной работы на компьютере, и особенно – в Интернете, недостаточно просто иметь соответствующие навыки. В немаловажной степени результаты работы зависят от того, насколько хорошо пользователь умеет защищать свой компьютер и хранимую в нем информацию. Особую важность вопросы защиты данных приобретают в свете того, что современные мошенники постоянно совершенствуют свое «мастерство», и потеря бдительности может привести к весьма печальным последствиям.В книге подробно рассматриваются различного рода нештатные ситуации, которые могут возникать при работе на компьютере, анализируются причины их возникновения и даются советы и рекомендации по решению этих проблем.


1С: Управление торговлей 8.2. Понятный самоучитель для начинающих

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации.


1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции.


Особенности ПДД разных стран мира. Шпаргалка для тех, кто путешествует за рулем

Книга представляет собой полезную шпаргалку для тех, кто планирует отправиться за границу за рулем автомобиля, и особенно – кто намеревается проехать транзитом несколько стран. Рассказывается, какой скоростной режим действует в той или иной стране, какие санкции полагаются за нарушение ПДД, каковы правила парковки, проезда нерегулируемых перекрестков, перевозки детей, использования ремней безопасности, зимних покрышек и т. д. Вы узнаете, чем в разных странах мира должен быть укомплектован автомобиль, какие документы обязан иметь при себе водитель, в каких странах права международного образца являются недействительными, в каком режиме работают автозаправочные станции, где внести дорожный сбор, что делать в случае ДТП, что такое Международная конвенция о дорожном движении, а также о многом другом.