Работа с файлами»
Цель: С помощью программных средств 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
Блок схема программы поиска слов из неповторяющихся букв.
|