Я работаю над формой MS Word для клиента, где они хотят иметь возможность подсчитывать количество слов, проверять орфографию, лимитировать лимит символов и оставлять остальную часть формы таким образом, чтобы что конечный пользователь не может изменить то, что им не требуется. Я попытался убедить их, что количество слов и лимит персонажей являются излишними, если у нас есть правильные инструкции, однако это то, что они хотят. Они также хотят, чтобы форма могла «работать», даже если пользователь не включил макросы, то есть они хотят, чтобы он был заблокирован, а символ ограничивал в первую очередь.MS Word ActiveX Text Spell Check
Я знаю, что если мы только богатый текстовый контент контролируем и помещаем форму в групповую проверку орфографии и словосочетания слов, а также «блокируем» оставшуюся часть формы, за исключением того, что элементы управления пользовательским контентом не допускают ограничений символов и использования Элементы управления legacy/activex в сгруппированной форме также блокируют эти элементы управления.
Итак, на данный момент я решил использовать текстовое поле ActiveX (это можно обсудить, если у меня есть причина использовать устаревшее текстовое поле) и достиг минимальной «работоспособности» (если это даже слово). Единственный способ, который я придумал, чтобы проверить орфографию ниже:
Sub chkSpelling()
Activedocument.Tables(1).Rows(26).Cells(1).Range.Text = txtRole.Text
Activedocument.Tables(1).Rows(26).Cells(1).Range.checkSpelling
txtRole.Text = Activedocument.Tables(1).Rows(26).Cells(1).Range.Text
'... so on and so forth throughout each text box
End Sub
Проблема в том, что это не достаточно хорошо для моих стандартов. Печать текста каждого текстового поля (до 1700 символов) в нижней части экрана каждый раз, когда мне нужно проверить правописание, является неприемлемым. Есть ли у кого-нибудь идеи?
Благодарим за помощь.
Ответ с помощью от @bibadia
Dim doc As Document
Set doc = Documents.Add(, , wdNewBlankDocument, False)
doc.Paragraphs(1).Range.Text = txtRole.Text
doc.Paragraphs(1).Range.CheckSpelling
txtRole.Text = Replace(doc.Paragraphs(1).Range.Text, Chr(13), "")
Нужно ли это делать в Word? –
есть, к сожалению, делает. –
Довольно неприятная ситуация, то. Я не проверял осуществимость, но мог ли вы создать объект нового экземпляра слова с .visible = false, скопировать текст в документ там и проверить орфографию? –