Основы офисного программирования и язык VBA

         

Dim attr As Integer, Num


Public Sub OpenTwoFiles() Dim attr As Integer, Num As Integer Dim MyFriend As Person ' объявление переменной ' Открываем файл с произвольным доступом для записи: Num = FreeFile Open "Friends" For Random Access Read Write As Num Len = Len(MyFriend) PrintAttr (Num) Debug.Print "Длина Записи:", Len(MyFriend) ' Открываем двоичный файл Num = FreeFile Open "pict.bmp" For Binary Access Read Lock Read As Num PrintAttr (Num)
End Sub
Public Sub PrintAttr(ByVal Num As Integer) 'Эта процедура по номеру файла определяет его атрибуты 'и выводит соответствующее сообщение в окно отладки Dim Msg As String, attr As Integer
attr = FileAttr(Num, 1) Debug.Print "файл # ", Num Select Case attr Case 1: Msg = "Input" Case 2: Msg = "Output" Case 4: Msg = "Random" Case 8: Msg = "Append" Case 32: Msg = "Binary" Case Else: Msg = "Таких файлов не бывает" End Select Debug.Print "Открыт для ", Msg
End Sub
Пример 14.1.
Закрыть окно




Public Sub WritingWithPrint() Dim MyBool As Boolean, MyDate As Date Dim MyNull As Variant, MyFloat As Double, MyErr As Variant
Print #1, "Первая строка файла" ' запись текстовой строки. 'Первая строка файла Print #1, "Зона 1"; Tab; "Зона 2" ' запись в двух позициях табуляции. 'Зона 1 Зона 2 Print #1, "Зона 1", "Зона 2" ' запятая разделяет как табуляции. 'Зона 1 Зона 2 Print #1, "Привет,"; "старик!" '; склеивает выражения. 'Привет,старик! Print #1, "Привет,"; "старик!" ' пробел действует аналогично. 'Привет,старик! Print #1, Spc(5); "5 пробелов " ' вставка 5 пробелов слева. ' 5 пробелов Print #1, Tab(20); "Старик,"; Tab(10); "привет!" ' печать в соответствующих столбцах. ' Старик ' привет! Print #1, "one"; " "; "two" 'разделение пробелом 'one two MyBool = False ' булева переменная Print #1, MyBool 'False MyDate = #6/14/1999# ' значение даты Print #1, MyDate ' печать в кратком формате '14.06.99 MyNull = Null ' нулевое значение Print #1, MyNull 'Null MyFloat = 3.1416 'вещественное значение ' использование функции Format: Print #1, MyFloat, Format(MyFloat, "#.00"), Format(MyFloat, "00.000") '3,1416 3,14 03,142 On Error Resume Next Err.Raise 6 MyErr = Err Print #1, MyErr MyErr = CVErr(2000) Print #1, MyErr End Sub
Пример 14.2.
Закрыть окно






Public Sub WritingWithWrite() Dim MyStr As String, MyBool As Boolean, MyDate As Date Dim MyNull As Variant, MyFloat As Double, MyErr As Variant
'Открытие файла readme.txt Open Path & "readme.txt" For Output As #7
'Создание файла Write #7, "Первая строка файла" ' запись текстовой строки. Write #7, "Зона 1", "Зона 2" ' запись двух строк. Write #7, "Привет,", "старик!" 'еще две строки MyStr = "раму мылом. " Write #7, "Мама ", "мыла ", MyStr MyBool = False ' булева переменная Write #7, MyBool MyDate = #6/14/1999# ' значение даты Write #7, MyDate ' запись даты MyNull = Null ' нулевое значение Write #7, MyNull MyFloat = 3.1416 'вещественное значение ' использование функции Format: Write #7, MyFloat, Format(MyFloat, "0.00"), Format(MyFloat, "00.000") On Error Resume Next Err.Raise 6 MyErr = Err Write #7, MyErr MyErr = CVErr(2000) Write #7, MyErr
End Sub
Пример 14.3.
Закрыть окно




Public Sub ReadingWithInput() Dim MyStr As String, MyBool As Boolean, MyDate As Date Dim MyNull As Variant, MyFloat As Double, MyErr As Variant Dim i As Integer 'Открытие файла readme.txt Open Path & "readme.txt" For Input As #7
'Чтение файла 'Первые 8 строк For i = 1 To 8 Input #7, MyStr Debug.Print MyStr Next i
'Данные разных типов Input #7, MyBool, MyDate, MyNull, MyFloat Debug.Print MyBool, MyDate, MyNull, MyFloat
'читаем отформатированные числа Input #7, MyStr Debug.Print MyStr Input #7, MyStr Debug.Print MyStr
'дважды читаем данные типа Error Input #7, MyErr Debug.Print MyErr Input #7, MyErr Debug.Print MyErr
'чтение до конца файла Do While Not EOF(7) Input #7, MyStr Debug.Print MyStr Loop End Sub
Пример 14.4.
Закрыть окно




Public Sub CreateRec(Rec As Товар) ' Создает запись типа Товар Randomize Rec.КодТовара = Int(Rnd * 9 + 1) 'Код от 1 до 9 Rec.Наименование = "Товар" & Rec.КодТовара Rec.Цена = Int(Rnd * 99 + 1) * Rec.КодТовара
End Sub
Public Sub PrintRec(Rec As Товар) 'Печать записи о товаре Debug.Print "Код Товара:", Rec.КодТовара, "Цена:", Rec.Цена End Sub
Public Sub CreateRandomFile() Dim i As Integer, NewRec As Товар Open Path & "Товары.9" For Random Access Write As #1 Len = Len(NewRec) 'Создаем 10 записей For i = 1 To 10 Call CreateRec(NewRec) Call PrintRec(NewRec) Put #1, NewRec.КодТовара, NewRec
Next i Debug.Print "Файл Товары.9 успешно создан" Debug.Print "Размер файла", LOF(1) Close #1 End Sub
Пример 14.5.
Закрыть окно




Public Sub Test2() 'Эта процедура работает с файлом, записи которого ' содержат строки переменной длины, не превосхоящей максимума, 'а также данные типа Variant
Dim Fam As String Dim Other As Variant 'Открытие файла произвольного доступа для чтения и записи Open Path & "Strings.var" For Random Access Read Write As #5 Len = 20
Fam = "Степанов" Put 5, 1, Fam Get 5, 1, Fam Debug.Print Fam, LOF(5) Fam = "Архангельский" Put 5, 2, Fam Get 5, 2, Fam Debug.Print Fam, LOF(5) Fam = "Куц" Put 5, 1, Fam Get 5, 1, Fam Debug.Print Fam, LOF(5)
'Запись типа Variant Other = "Петров" Put 5, 3, Other Get 5, 3, Other Debug.Print Other, LOF(5) Other = 125.25 Put 5, 4, Other Get 5, 4, Other Debug.Print Other, LOF(5) Other = 125 Put 5, 5, Other Get 5, 5, Other Debug.Print Other, LOF(5)
Close #5 End Sub
Пример 14.6.
Закрыть окно



Содержание раздела