2013-11-20 4 views
0

Я работаю над формой 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), "") 
+0

Нужно ли это делать в Word? –

+0

есть, к сожалению, делает. –

+1

Довольно неприятная ситуация, то. Я не проверял осуществимость, но мог ли вы создать объект нового экземпляра слова с .visible = false, скопировать текст в документ там и проверить орфографию? –

ответ

1
  1. Использование CreateObject для создания нового экземпляра слово

  2. Убедитесь .Visible = False (я думаю, что это по умолчанию)

  3. Создайте новый документ в этом случае.

  4. Скопируйте текст, который будет проверяться в том

  5. проверки орфографии.

  6. Удалите документ и экземпляр Word.

0

Если я правильно понимаю ваш вопрос, то,

I need to check the Spelling is unacceptable. Does anyone else have any ideas? 

Если текстовые поля называются числами, вы можете быть в состоянии использовать цикл, и сохранить ваши строки кодирования со временем.

want the form to be able to "work" even if the user does not enable macros 

Если пользователь не включить макросы, он не сможет увидеть форму (это форма пользователя, вы хотите сказать) и нет фона код макроса будет работать. (Протестировано на Ms-Excel 2007), что в конечном итоге терпит неудачу.

regarding text box control on user form 

Да, который может быть установлен на ограничение персонажа из меню свойств, а проверка орфографии может быть выполнена с использованием вашего метода.

Set range2 = Documents("MyDocument.doc").Sections(2).Range 
range2.CheckSpelling IgnoreUpperCase:=False, _ 
    CustomDictionary:="MyWork.Dic", _ 
    CustomDictionary2:="MyTechnical.Dic" 
+0

по форме Я не имел в виду пользовательскую форму, я имел в виду сбор данных форму. Невозможно представить себе лучший способ описать это. Я перехожу к разработчику -> ограничить редактирование -> Заполнение форм, чтобы заблокировать документ и разрешить редактирование только там, где есть текстовые поля. –

Смежные вопросы