Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по лабораторным работам.docx
Скачиваний:
108
Добавлен:
29.03.2015
Размер:
806.57 Кб
Скачать

Лабораторная работа № 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

Блок схема программы поиска слов из неповторяющихся букв.