- •Лабораторная работа №1. «Знакомство со средствами html и css».
- •Лабораторная работа №2. «Работа с управляющими структурами vba».
- •Лабораторная работа №3. «Операторы повторения (циклы). Итеративные методы вычислений».
- •Лабораторная работа № 4. «Работа с файлами».
- •Лабораторная работа №5. « Работа с формами vba и сложными типами данных».
Лабораторная работа № 4. «Работа с файлами».
Цель: С помощью программных средств VBA разработать программу считывающую из заранее созданного текстового файла фрагмент текста объемом 300 - 400 символов, содержащий буквы русского алфавита, цифры, знаки пунктуации и пробел. Текст должен быть представлен в отдельном окне с переносом информации на новую строку только в позиции пробела. Программа должна проанализировать выводимый текст и отдельно вывести удовлетворяющие заданному варианту слова и их количество.
Постановка задачи:не повторяющиеся буквы.
Для чтения данных из файла в VBA используем оператор «Open», синтаксис которого предполагает указание ссылки на файл режим чтение или запись. Например: Open ThisDocument.Path & "\stext.txt" For Input As #1.
Цикл чтения данных из файла запишем так:
Dim buffer, str As String 'переменные для чтения из файла
Set myRange = ThisDocument.Range
Open ThisDocument.Path & "\stext.txt" For Input As #1 'указываем файл для чтения
'читаем данные пока не достигнем конца файла
Do Until EOF(1)
Line Input #1, buffer
str = str & buffer
Loop
Close #1
'програмно определяем свойства текста в Word документе
With myRange.Font
.Name = "Times New Roman"
.Size = 12
End With
myRange.Text = str 'записываем считаную строку данных из файла в файл Word
Блок схема программы чтения из файла.
Для решения поставленной задачи – поиска и подсчета слов состоящих из не повторяющихся букв; каждую букву в слове будем добавлять в коллекцию и если буква повторяется то метод добавления сгенерирует ошибку, которую мы и будем программно обрабатывать.
Код программы поиска слв из неповторяющихся букв:
Dim oWord As Object, s$, i&, buffer$
Dim j As Integer
On Error GoTo err_col
For Each oWord In ThisDocument.Range.Words
With New Collection
s = Trim$(Replace$(oWord.Text, Chr$(160), "")) 'режем считаный текст на слова
If Not s Like "[.,-?():]" Then
For i = 1 To Len(s)
.Add 0, Mid$(s, i, 1) 'добавляем в коллекцию
Next
'если буквы разные - нет ошибки добавления в коллекцию(при добавлении разных элементов с одинаковым ключем), красим.
ThisDocument.Range _
(oWord.Start, oWord.End + (Right$(oWord.Text, 1) Like "[ ]")) _
.HighlightColorIndex = wdBrightGreen 'зелёный цвет
'считаем найденые слова
j = j + 1
buffer = buffer & s & " "
End If
next_word: 'переходим к следующему слову
End With
Next
'вывод сообщения о результате поиска
MsgBox "Всего найдено слов: " & (j - 1) _
& vbNewLine & vbNewLine & buffer, vbOKOnly, "Поиск: "
Exit Sub
err_col: 'переход к следующему oWord(Слово), если в нём есть повтор буквы
Resume next_word
Блок схема программы поиска слов из неповторяющихся букв.