Visual Basic 6. Руководство разработчика

       

Проверка орфографии документов


Одна из наиболее полезных функции Word — способность к орфографической проверке документов. Эту же возможность Word предоставляет объектам VBA, и ее можно использовать в приложениях, созданных в Visual Basic. Сделать это очень просто. Чтобы обратиться к подпрограмме проверки орфографии Word, необходимо определить два объекта семейство ProofReadingErrors и семейство SpellingSiiggestions.

Семейство ProofReadingErrors — это свойство объекта Range Оно содержит слова с орфографической ошибкой в объекте Range. Чтобы вызвать Word для орфогра­фической проверки фрагмента текста и расширить семейство ProofReadingErrors, следует вызвать метод SpellmgErrors объекта Range. Этот метод возвращает результат, который должен быть сохранен в объектной переменной типа ProofreadingErrors:

Dim SpellCollection As ProofreadingErrors

Set SpellCollection = DRange SpellingErrors

DRange — это объект типа Range (абзац или весь документ). Вторая строка заполняет переменную SpellCollection словами с орфографическими ошибками. После этого можно организовать цикл типа For Each Next, чтобы прочитать слова из указанного семейства.

Помимо отыскания и выделения орфографических ошибок,

Word может также предлагать список альтернативных вариантов написания или список слов, которые звучат подобно ошибочно написанному слову. Чтобы найти список альтернативных вариантов написания слов, следует вызвать метод GetSpellmgSuggestions

объекта Application, передавая ему слово с орфографической ошибкой в качестве параметра. Обратите внимание, что это метод объекта Application, а не проверяемого объекта Range. Результаты, возвращенные методом GetSpellmgSuggestions, должны быть сохранены в аналогичной объектной переменной, которая была объявлена как переменная типа SpellingSuggestions:

Dim CorrectionsCollection As SpellingSuggestions

Set CorrectionsCollection = _

AppWord.GetSpellmgSuggestions ("antroid")

Оператор, находящийся во второй строке, организует доступ к списку предла­гаемых вариантов для слова antroid.




Чтобы просмотреть список предложенных слов, следует предусмотреть цикл получения всех элементов семейства CorrectionsCollection. Пример, приведенный в следующем параграфе, демонстрирует использование обоих методов в приложении Visual Basic.

VB6 в действии: проект SpellDoc

SpellDoc — это приложение, в котором используются методы Word для орфо­графической проверки документа. Приложение SpellDoc можно найти в папке, посвященной этой главе на компакт-диске. Главная форма приложения, показанная на рис. 14.15, содержит окно элемента управления TextBox, в которое пользователь может вводить некоторый текст (или вставлять текст из другого приложения) и выполнять его орфографическую проверку, щелкая на кнопке Spell Check Document.



Рис. 14.15. Главная форма приложения SpellDoc

Приложение обратится к Word и запросит список слов с орфографическими ошибками Этот список будет отображаться в окне другой формы (рис. 14.16). В окне элемента управления ListBox, расположенном слева, приводится список всех слов с орфографическими ошибками, которые Word обнаружил в тексте. Но Word не только составляет список слов, содержащих орфографические ошибки, но и предлагает возможные варианты их замены. Чтобы просмотреть список альтер­нативных вариантов написания определенного слова, следует с помощью мыши выбрать слово в левом списке



Рис. 14.16. Эта форма приложения SpellDoc отображает слова с орфографической ошибкой и возможные варианты замены

Чтобы заменить все вхождения выделенного слова (с орфографической ошибкой) на выбранный вариант, следует щелкнуть на кнопке

Replace (Замена). Можно разработать собственный интерфейс, предоставляющий пользователю возможность выбора, количества и вида вхождений слов с орфографической ошибкой, которые будут заменены.

В программе используются три глобальные переменные, которые объявлены следующим образом:

Public AppWord As Application

Public CorrectionsCollection As SpellingSuggestions

Public SpellCollection As ProofreadingErrors

Переменная



SpellCollection

описывает семейство, содержащее все слова с орфо­графическими ошибками, а переменная CorrectionsCollection - семейство, содержащее предложенные программой проверки орфографии варианты замены для опреде­ленного слова. Значение переменной CorrectionsCollection присваивается каждый раз, когда пользователь выбирает другое слово с орфографической ошибкой в окне Spelling Suggestions (см. рис. 14.16).

После выполнения щелчка на кнопке Spell Check Document программа обра­щается к приложению Word. Сначала с помощью функции Get0bject() программа пытается соединиться с запущенным экземпляром Word. Если в настоящее время нет ни одного запущенного экземпляра Word, запускается новый экземпляр. Это выполняет следующий фрагмент программы.

Программа 14.12. Обращение к Word

Set AppWord = Get0bject ("Word Application")

If AppWord Is Nothing Then

Set AppWord = CreateObject ("Word.Application")

If AppWord Is Nothing Then

MsgBox "Could not start Word Application will end"

' (Невозможно открыть Word Работа приложения

' будет прекращена)

End

End If

End If

После того как связь с Word установлена, программа создает новый документ и с помощью метода InsertAfter объекта Range копирует содержимое окна элемента управления TextBox в новый документ. Это выполняется следующим образом:

AppWard.Documents.Add

DRange.InsertAfter Textl.Text

Теперь VB-программа вызывает метод SpellingErrors объекта Range, который возвращает семейство объектов Word. Результат метода SpellingErrors присваивается объектной переменной SpellCollection:

Set SpellCollection = DRange.SpellingErrors

Приведенный ниже фрагмент программы добавляет слова, содержащиеся в переменной SpellCollection, к левому списку второй формы и отображает эту форму.

Программа 14.13. Кнопка Check Document

Private Sub Command1_C1ick()

Dim DRange As Range

Me.Caption = "starting word   "

' (начальное слово)

On Error Resume Next

Set AppWord = Get0bject ("Word.Application")



If AppWord Is Nothing Then

Set AppWord = CreateObject ("Word.Application")

If AppWord Is Nothing Then

MsgBox " Could not start Word. Application will end"

'(Запустить Word невозможно. Приложение будет закрыто) End

End If

End If

On Error GoTo ErrorHandler

AppWord.Documents.Add

Me Caption = "checking words... "

'(проверка слов... )

Set DRange = AppWord.ActiveDocument.Range

DRange.InsertAfter Text1.Text

Set SpellColiection = DRange.SpellingErrors

If SpellColiection.Count > 0 Then

SuggestionsForm.List1.Clear

SuggestionsForm.List2.Clear

For iWord = 1 To SpellColiection.Count

 SuggestionsForm!List1.Addltem _

SpellColiection.Item(iWord)

Next

End If

Me.Caption = "Word VBA Example"

SuggestionsForm.Show

Exit Sub

ErrorHandler:

MsgBox "The following error occured during the document's _

spelling"& vbCrLf & Err.Description

' (Во время проверки обнаружена следующая ошибка ...)

End Sub

Во второй форме приложения основное внимание сконцентрировано в Word на обработке события Click в окне Words in Question. Каждый раз, когда выполня­ется щелчок на элементе списка в левом окне ListBox, программа вызывает метод GetSpellingSuggestions

объекта AppWord, передавая выбранное слово в качестве параметра. Обратите внимание, что к значению свойства Listlndex объекта List прибавляется 1, чтобы отобразить тот факт, что индексация элементов семейства начинается с 1, в то время как индексация элементов окна списка ListBox начина­ется с 0. Метод GetSpellingSuggestions возвращает другое семейство, содержащее предложенные слова, которые помещены во второе (правое) окно элемента управления ListBox, помещенное на форме с помощью следующего фрагмента.

Программа 14.14. Обработчик события

Click в окне списка

Private Sub Listl_Click()

Screen.MousePointer = vbHourglass

Set CorrectionsCollection = _

AppWord.GetSpellingSuggestions(SpellColiection.Item _

(List1.ListIndex + 1))

List2.Clear

For iSuggWord = 1 To CorrectionsCollection.Count



List2.AddltemCorrectionsCollection.Item(iSuggWord)

Next

Screen MousePointer = vbDefault

End Sub

Приложение Spell Doc может стать отправной точкой для создания средствами Visual Basic различных пользовательских приложении, в которых требуется проверка правильности написания, но не требуются мощные средства редактирования. В некоторых случаях может потребоваться настройка проверки правописания, хотя такая ситуация встречается достаточно редко. Например, в приложении, обрабатывающем почтовые отправления, может потребоваться выполнение орфо­графической проверки, позволяющей исключить неправильно введенные адреса. В этом случае сначала следует организовать просмотр списка слов, возвращенных методом SpellingErrors, проверить, содержатся ли в словах специальные символы, и удалить их.

Теперь вполне очевидно, что внести изменения в Office-приложения совсем несложно. Познакомившись с объектами этих приложений, можно установить с ними связь, управляя некоторыми свойствами и вызывая методы этих объектов.


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