Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Старые+лабы+по+VBA.doc
Скачиваний:
3
Добавлен:
05.09.2019
Размер:
70.66 Кб
Скачать

Input #1, j ‘читаем элемент файла

Cells(i, 1) = j

i = i + 1

Loop

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

End Sub

Сравните результат работы подпрограммы с использованием команды Input и команды Line Input.

  1. Пусть необходимо добавить строчку в файл. Как его открыть в этом случае? Если открыть как Output, тогда мы потеряем все содержимое файла, при открытии Input мы можем только читать, но не можем писать. Для этого случая существует Append - при открытии на запись указатель позиции устанавливается на конец файла - поэтому можно писать в конец. Допишем в конец нашего файла его имя:

Sub addFile()

Open "e:\exampl.txt" For Append As #1

'открываем файл на дозапись в конец и присваиваем ему номер 1

Print #1, "e:\exampl.txt" 'выводим в файл его имя

Close #1 'обязательно нужно закрыть файл!

End Sub

Откройте файл в блокноте и посмотрите результат.

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

  2. Самостоятельно напишите программу обработки файла, решающую поставленную преподавателем задачу.

Практическая работа работа с файлами в vba. Файлы произвольного и бинарного доступа

Цели работы:

  • познакомиться с типами файлов;

  • освоить процедуры чтения, записи и обработки файлов произвольного доступа и двоичных;

  • научиться обрабатывать информацию, хранящуюся в файлах.

ЗАДАНИЯ

  1. Файлы произвольного доступа еще называют типизированными файлами, так как в них информация храниться в виде однотипных элементов, занимающих одинаковый объем памяти. Именно тот факт, что все элементы имеют одинаковый объем, позволяет получить доступ непосредственно к любому элементу файла, так как его положение легко вычисляется как смещение от начала файла на Длина_компонента*(Номер_компонента-1). В отличие от файлов с последовательным доступом прочитать содержимое типизированного файла в текстовом редакторе нельзя2, но можно одновременно читать и писать, открыв такой файл. Начнем с формирования файла произвольного доступа. В качестве источника будем использовать созданную ранее таблицу базы данных3. Каждая запись о сотруднике кафедры содержит разнотипные и разноформатные данные. Определим для хранения записи особый пользовательский тип:

Type Employee

ID As Integer

Family As String * 20

Name As String * 20

LenService As Integer 'стаж

Category As Integer

BirthDay As Date

Combine As Boolean 'совместительство

Post As String * 30

Degree As String * 10

End Type

Перепишем теперь записи таблицы в файл произвольного доступа. При открытии файла указывается Random - произвольный доступ к элементам, и обязательно - длина элементов, образующих его. Запись в файл осуществляется функцией Put, в которой необходимо указать номер файла, позицию и переменную из которой производится запись в файл. Позиция может быть пропущена, тогда запись производится в текущую позицию4.

Sub NewFile()

Dim i As Integer

Dim MyRecord As Employee ' Объявляем переменную типа запись

Open "bd.dat" For Random As #1 Len = Len(MyRecord)

For i = 2 To Application.CountA(ActiveSheet.Columns(1)) ' для всех записей таблицы

With MyRecord 'считываеv из i-ой строки запись о сотруднике

.ID = Cells(i, 1)

.Family = Cells(i, 2)

.Name = Cells(i, 3)

.LenService = Cells(i, 4)

.Category = Cells(i, 5)

.BirthDay = Cells(i, 6)

.Combine = Cells(i, 7)

.Post = Cells(i, 8)

.Degree = Cells(i, 9)

End With

Put #1, i - 1, MyRecord ' Записываем запись в файл

Next i

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

End Sub

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

  1. Следующий этап - это чтение из файла. Предположим, что у нас есть файл с данными и мы хотим его просмотреть на листе Excel. Для этого необходимо подготовить форму таблицы - ее заголовок, считать и отобразить записи из файла произвольного доступа. Чтение осуществляет функция Get, в которой указывается номер файла, позиция считывания5 и переменная, в которую заносятся считанные данные. Проиллюстрируем сказанное:

Sub FileInTable()

Dim i As Integer

Dim MyRecord As Employee ' Объявляем переменную типа запись

'Названия столбцов таблицы берем из массива

Range("A1:I1").Value = Array("n/n", "ФАМИЛИЯ", "ИМЯ", "СТАЖ", "РАЗРЯД",_ "ДАТА РОЖДЕНИЯ", "СОВМЕСТИТЕЛЬСТВО", "ДОЛЖНОСТЬ", "СТЕПЕНЬ")

Заголовок 'Запускаем макрос форматирования «шапки» таблицы и закрепления области

Примечания 'добавляем примечания к заголовкам

'открываем файл произвольного доступа при этом обязательно указывается длина одной записи

Open "bd.dat" For Random As #1 Len = Len(MyRecord)

i = 1

Do

Get #1, i, MyRecord ' Читаем одну запись