Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2011, 23:14   #1
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию Функции VBA для проверки правописания

Подскажите, пожалуйста, есть ли в VBA функции для проверки правописания. Хотелось бы попробовать программно проверить большой текстовой файл с русским тестом, найти в нем слова, отстуствующие в словаре или неправильно написанные, сохранить файл с комментариями и возможными вариантами замены этих слов.
tumanovalex вне форума Ответить с цитированием
Старый 21.04.2011, 08:29   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

в свое время стандартные F7 меня не устроили

была написана прога
-выделение слова
-автозапись новых в словарь
-просмотр словаря новых слов
-выявление грубятины
-перевод фамилий-имен-отч в Фамилий-Имен-Отч
-перевод ооокрона в ООО "Крона"(ооокрона набивалось без пробела)
-вставка стандартных кусков(согласовано, утверждаю, должности и лица)
гли00 переводился в Главный инженер Иванов И.И.
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 26.04.2011, 08:13   #3
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

А какие функции VBA отвечают за работу со словарем? Вы работали только со своим словарем (словарем пользователя) или со словарем Word?
tumanovalex вне форума Ответить с цитированием
Старый 26.04.2011, 15:31   #4
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
CheckSpelling Method

See AlsoApplies ToExampleSpecificsCheckSpelling method as it applies to the Application and Global objects.

Checks a string for spelling errors. Returns a Boolean to indicate whether the string contains spelling errors. True if the string has no spelling errors.
Код:
expression.CheckSpelling(Word, _
   CustomDictionary, _
   IgnoreUppercase, _
   MainDictionary, CustomDictionary2, CustomDictionary3, CustomDictionary4, CustomDictionary5, CustomDictionary6, CustomDictionary7, CustomDictionary8, CustomDictionary9, CustomDictionary10)
expression Required. An expression that returns an Application or Global object.
Word Required String. The text whose spelling is to be checked.
CustomDictionary Optional Variant. Either an expression that returns a Dictionary object or the file name of the custom dictionary.
IgnoreUppercase Optional Variant. True if capitalization is ignored. If this argument is omitted, the current value of the IgnoreUppercase property is used.
MainDictionary Optional Variant. Either an expression that returns a Dictionary object or the file name of the main dictionary.
CustomDictionary2 – CustomDictionary10 Optional Variant. Either an expression that returns a Dictionary object or the file name of an additional custom dictionary. You can specify as many as nine additional dictionaries.

CheckSpelling method as it applies to the Document and Range objects.

Begins a spelling check for the specified document or range. If the document or range contains errors, this method displays the Spelling and Grammar dialog box (Tools menu), with the Check grammar check box cleared. For a document, this method checks all available stories (such as headers, footers, and text boxes).
Код:
expression.CheckSpelling(CustomDictionary, _
    IgnoreUppercase, _
    AlwaysSuggest, _
    CustomDictionary2, _
    CustomDictionary3, _
    CustomDictionary4, _
    CustomDictionary5, _
    CustomDictionary6, _
    CustomDictionary7, _
    CustomDictionary8, _
    CustomDictionary9, _
    CustomDictionary10)
expression Required. An expression that returns a Document or Range object.
CustomDictionary Optional Variant. Either an expression that returns a Dictionary object or the file name of the custom dictionary.
IgnoreUppercase Optional Variant. True if capitalization is ignored. If this argument is omitted, the current value of the IgnoreUppercase property is used.
AlwaysSuggest Optional Variant. True for Microsoft Word to always suggest alternative spellings. If this argument is omitted, the current value of the SuggestSpellingCorrections property is used.
CustomDictionary2 – CustomDictionary10 Optional Variant. Either an expression that returns a Dictionary object or the file name of an additional custom dictionary. You can specify as many as nine additional dictionaries.

Example
As it applies to the Range object.

This example begins a spelling check on all available stories of the active document.
Код:
Set range2 = Documents("MyDocument.doc").Sections(2).Range
range2.CheckSpelling IgnoreUpperCase:=False, _
    CustomDictionary:="MyWork.Dic", _
    CustomDictionary2:="MyTechnical.Dic"
Так же смотрите в HELP по объектной модели Word VBA описание
SpellingSuggestions Collection Object
GetSpellingSuggestions Method
SpellingErrorType Propery
ShowSpellingErrors Property
Dictionary Object
ActiveSpellingDictionary Property

К сожалению, последний удобный HELP по Word VBA был в 2003 офисе.

Последний раз редактировалось Aent; 26.04.2011 в 15:38.
Aent вне форума Ответить с цитированием
Старый 26.04.2011, 17:17   #5
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Как я понял, эти функции позволяют работать только со своими (пользовательскими) словарями. А как работать со словарем Word, внедренным в него?
tumanovalex вне форума Ответить с цитированием
Старый 26.04.2011, 19:55   #6
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Неправильно поняли.
Неужели так сложно внимательно прочитать HELP и попробовать самому ?
Код:
Sub DisplaySuggestions()
    Dim sugList As SpellingSuggestions
    Dim sug As SpellingSuggestion
    Dim strSugList As String
    Dim strWord As String
    strWord = "карова"
    Set sugList = GetSpellingSuggestions(Word:=strWord, SuggestionMode:=wdSpellword)
    If sugList.Count = 0 Then
        MsgBox "Проверяемое слово корректно"
    Else
        For Each sug In sugList
            strSugList = strSugList & vbTab & sug.Name & vbLf
        Next sug
        MsgBox "Варианты для слова """ & strWord & """:" & vbLf & strSugList
    End If
End Sub

Последний раз редактировалось Aent; 26.04.2011 в 20:19.
Aent вне форума Ответить с цитированием
Старый 26.04.2011, 20:38   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

помоему тоже самое только вид сбоку:
Код:
Sub Проверяем_орфографию_грамматику_слова()

Проверяемое_слово = "хаем"
'проверяем грамматику, точку и пробел надо ставить у проверяемого слова
If Application.CheckGrammar(Проверяемое_слово & ". ") = True Then
MsgBox "Проверяемое слово: " & Проверяемое_слово & " без ошибок!"
Else
MsgBox$ "Проверяемое слово: " & Проверяемое_слово & " подчёркнуто зелёной волнистой линией"
'применимо для Word 2007, бывает версия Word 2007 "12.0.4518"
If Left$(Application.Build, 2) = "12" Then Проверка_грамматики (Проверяемое_слово)
End If

'проверяем орфографию
If Application.CheckSpelling(Проверяемое_слово) Then
   MsgBox "Проверяемое слово: " & Проверяемое_слово & " без ошибок!"
Else
   Dim sugList As SpellingSuggestions
   Dim sug As SpellingSuggestion
   Dim strSugList As String
   'Spelling Suggestions орфография предложения
   Set sugList = GetSpellingSuggestions(Word:=Проверяемое_слово, SuggestionMode:=wdSpellword)
   
   If sugList.Count = 0 Then
       MsgBox "Предложения замены слову: " & Проверяемое_слово & " нет"
   Else
       For Each sug In sugList
           strSugList = strSugList & vbTab & sug.Name & vbLf
       Next sug
       MsgBox "Предложения для замены слова: " & Проверяемое_слово & vbLf & strSugList
   End If
End If

End Sub

Function Проверка_грамматики(Проверяемое_слово)
       
       Dim Doc As Document
       Set Doc = Documents.Add(, True, , False)
       Doc.Content.Text = Проверяемое_слово
       Do Until Doc.GrammarChecked
           DoEvents
       Loop
       For i = 1 To Doc.Content.Words.Count
           Doc.Content.Words(i).Select
           ПервыйЭлементКонтекстногоМеню = Doc.CommandBars("Grammar").Controls(1).Caption
           If ПервыйЭлементКонтекстногоМеню <> "&Грамматика..." Then
               Exit For
           End If
       Next
       Doc.Close False
       
       MsgBox ПервыйЭлементКонтекстногоМеню
       
 End Function
Ципихович Эндрю вне форума Ответить с цитированием
Старый 28.04.2011, 16:35   #8
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Спасибо большое, буду разбираться
tumanovalex вне форума Ответить с цитированием
Старый 28.04.2011, 18:59   #9
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

кстати уловите разницу между моим примером и примером Аэнта, отпишитесь
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для проверки (правильности кода). Контекст. AmbaQ Софт 4 14.11.2010 16:50
Пропала проверка правописания dima9 Microsoft Office Word 13 11.10.2010 01:08
Помогите написать скрипт для проверки правильности ввода числа в строке DiSpalL JavaScript, Ajax 6 19.06.2009 16:48
Проверка правописания в TRichEdit TIgor4 Общие вопросы Delphi 1 03.07.2008 17:17