4. ФУНКЦИИ РАБОТЫ СО СТРОКАМИ
Строка в VBA может иметь переменную
или постоянную длину.
Строка переменной длины занимает объем
оперативной памяти, который может
меняться в процессе выполнения программы.
Строка постоянной длины занимает
фиксированный объем оперативной памяти.
Например:
Dim strA As String
Dim strB As String * 15
strA = "Программирование"
strB = "Программирование"
ВыходВыход
5. ПриПри работе со строками используются триработе со строками используются три
функции удаления пробеловфункции удаления пробелов::
Например:
Dim strA As String
Dim strB As String
strA = " Строковая переменная "
strB = LTrim(strA)
strB = Trim(strA)
Функция Описание
LTrim
Удаляет все пробелы в начале
строки (слева – left)
RTrim
Удаляет все пробелы в конце строки
(справа – right)
Trim
Удаляет все пробелы в начале и
конце строки
ВыходВыход
6. ФункцииФункции преобразованияпреобразования
Например:
Dim strA As String
Dim strB As String
strA = "Строковая переменная"
strB = Replace(strA, "переменная", "константа")
Функция Описание
CStr или Str Преобразует число в строку
Val
Преобразует строку в число
UCase
Преобразует строку к
верхнему регистру
LCase
Преобразует строку к
нижнему регистру
Replace
Заменяет часть строки или
определенные символы
ВыходВыход
7. ФункцииФункции выделения подстрокивыделения подстроки
Функция Описание
Left (строка, количество)
Возвращает начало строки с
указанным количеством
символов
Right (строка, количество)
Возвращает подстроку с
указанным количеством
символов с конца строки
Mid (строка, номер[,
количество])
Возвращает подстроку,
содержащую указанное
количество символов, начиная с
указанного номера. Если
количество не указано –
возвращает символы до конца
строки
ВыходВыход
Dim strA As StringDim strA As String
Dim strB As StringDim strB As String
strA = "Моя строковая переменная"strA = "Моя строковая переменная"
strB = Left (strA, 3)strB = Left (strA, 3)
strB = Right (strA, 10)strB = Right (strA, 10)
strB = Mid (strA, 5, 9)strB = Mid (strA, 5, 9)
9. Файл последовательногоФайл последовательного
доступадоступа
представляет собой
текстовый
файл, состоящий из
записей
переменной длины,
конец которой
отмечается символом
возврата
каретки/перевода
строки CRLF
Файл произвольногоФайл произвольного
доступадоступа
Бинарный файлБинарный файл
сохраняет данные
как ряд записей
фиксированного
размера,
разрешается
непосредственный
доступ к каждой
записи по ее
номеру
данные
хранятся как
неформатиро-
ванная
последователь-
ность байтов
ВыходВыход
10. Режимы доступа к файлу
Аргумент mode Режим доступа к файлу
APPEND
Последовательный доступ к файлу. Если filename уже
существует, то новые данные присоединяются в конце этого
файла. Если filename не существует, файл создается
BINARY
Бинарный доступ к файлу, для чтения и записи данных. Если
filename не существует, файл создается
INPUT
Последовательный доступ к файлу, только для чтения данных.
Если filename не существует, оператор выдает ошибку
OUTPUT
Последовательный доступ к файлу, только для записи данных.
Если filename существует, файл удаляется и создается новый
файл. Если filename не существует, файл создается
RANDOM
Произвольный доступ к файлу, для чтения и записи данных.
Если filename не существует, файл создается. Этот режим
файлового доступа используется по умолчанию, если аргумент
mode не задан.
ВыходВыход
11. Открытие файловОткрытие файлов
Open filename For mode [Access access]Open filename For mode [Access access]
[lock] As[lock] As #filenum [LEN=reclen]#filenum [LEN=reclen]
название файла
(записывается
полный путь)
режим доступа к файлу
операции, разрешенные
с открытым файлом
доступ к файлу
других процессов
дескриптор файла
длина записи для
файлов с произвольным
доступом и размер
буфера для файлов с
последовательным доступом
ВыходВыход
12. ОПЕРАЦИИ, РАЗРЕШЕННЫЕ С ОТКРЫТЫМ
ФАЙЛОМ
Файл открывается для чтения и для
записи. Этот режим
распространяется только на файлы
и последовательные файлы,
открытые для режима APPEND.
READREAD WRITEWRITE
Файл открывается только для
записи
WRITEWRITE
Файл открывается только для
чтения
READREAD
ОписаниеЗначение
аргумента
access
ВыходВыход
13. ФУНКЦИИ РАБОТЫ С ТЕКСТОВЫМИ ФАЙЛАМИ
Для начала работы с текстовым файлом
используется оператор открытия файла:
OpenOpen имяимя ForFor назначениеназначение AsAs номерномер
•имя – полное имя файла
•номер – номер файла
•назначение – это ключевое слово
Input (считывание информации), Output
(запись) или Append (добавление
информации)
ВыходВыход
14. В качестве номера файла номер
рекомендуется использовать переменную
типа Integer, значение которой задается
с помощью оператора присваивания
номер =номер = FreeFileFreeFile
Этот опреатор должен находиться перед
оператором Open;
FreeFile – функция, возвращающая в
программу незанятый номер файла.
ВыходВыход
15. По окончании работы с файлом его следует
закрыть с помощью оператора Close.
Синтаксис:
CloseClose номерномер
Для добавления в файл новых строк
используется оператор Print.
Синтаксис:
PrintPrint ##номерномер,, строкастрока
ВыходВыход
16. Существует два способа извлечения
информации из текстового файла:
1. с помощью оператора Line Input
Синтаксис:
LineLine Input #Input #номер, переменнаяномер, переменная
Этот оператор производит считывание из файла
очередной строки, которая присваивается
переменной строкового типа переменная
2. с помощью функции
Input (Input (количество, номерколичество, номер))
Эта функция возвращает в программу строку,
содержащую указанное количество символов
ВыходВыход
18. Sub Создание()
Dim FName1 As String
Dim FName2 As String
Dim FNum1 As Integer
Dim FNum2 As Integer
Dim n1 As Long
Dim n2 As Long
Dim strA As String
'создание каталога texts:
MkDir ("d:texts")
'задаем имена файлов:
FName1 = "d:textsa.txt"
FName2 = "d:textsb.txt"
ВыходВыход
19. 'Создание файла a.txt:
FNum1 = FreeFile
Open FName1 For Output As FNum1
strA = "Создан текстовый файл,"
Print #FNum1, strA
Print #FNum1, "который состоит из
нескольких _
строк."
'находим количество символов в файле
a.txt:
n1 = LOF(FNum1)
Close FNum1
MsgBox "В файле a.txt " & Str(n1) & “
символов."
ВыходВыход
20. 'Копирование текста из файла a.txt
в b.txt:
FNum1 = FreeFile
Open FName1 For Input As FNum1
FNum2 = FreeFile
Open FName2 For Output As FNum2
'в цикле считываем текст:
Do Until EOF(FNum1)
Line Input #FNum1, strA
Print #FNum2, strA
Loop
Close FNum1
ВыходВыход
21. 'Добавление новой строки в файл
b.txt:
strA = "Добавлена новая строка."
Print #FNum2, strA
n2 = LOF(FNum2)
Close FNum2
FNum2 = FreeFile
Open FName2 For Input As FNum2
'считывание символа:
strA = Input(1, FNum2)
Close FNum2
MsgBox "В файле b.txt" & Str(n2) & "символов, " _
& "причем первый символ - " &
strA
End Sub
ВыходВыход
23. Может потребоваться уничтожение
файлов a.txt и b.txt и папки
texts по окончании выполнения
программы. Для этого перед строкой
End Sub следует добавить операторы
уничтожения файлов:
Kill (FName1)
Kill (FName2)
RmDir ("d:texts")
ВыходВыход
24. Пример программы добавления
строки в файл b.txt и запуска
редактора Блокнот (Notepad)
Sub Добавление()
Dim FNum As Integer
Dim n As Long
Dim RetVal ‘для функции Shell
FNum = FreeFile
ВыходВыход
25. 'Открытие файла b.txt и ввод новой строки
Open "d:textsb.txt" For Append As FNum
Print #FNum, "Добавлена вторая новая
строка."
'находим количество символов в файле b.txt:
n = LOF(FNum)
Close FNum
MsgBox "В файле b.txt " & Str(n) & “ символов."
'Запуск редактора Блокнот
RetVal = Shell (“c:Windowsnotepad.exe”,
1)
End Sub
ВыходВыход