Vba MS Word ActiveX文本框拼写检查

Vba MS Word ActiveX文本框拼写检查,vba,ms-word,Vba,Ms Word,我正在为一个客户开发一个MS Word表单,他们希望能够计算字数、检查拼写、设置字符限制,并锁定表单的其余部分,以便最终用户无法更改他们不应该更改的任何内容。我试图说服他们,如果我们有适当的指示,字数和字符限制是多余的,然而,这是他们想要的。他们还希望表单能够“工作”,即使用户不启用宏,也就是说,他们希望表单首先被锁定,并有字符限制 我知道,如果我们只是富文本内容控件,并将表单放入组拼写检查和单词计数,同时“锁定”表单的其余部分,则用户内容控件不允许字符限制,并且在分组表单中使用旧版/activ

我正在为一个客户开发一个MS Word表单,他们希望能够计算字数、检查拼写、设置字符限制,并锁定表单的其余部分,以便最终用户无法更改他们不应该更改的任何内容。我试图说服他们,如果我们有适当的指示,字数和字符限制是多余的,然而,这是他们想要的。他们还希望表单能够“工作”,即使用户不启用宏,也就是说,他们希望表单首先被锁定,并有字符限制

我知道,如果我们只是富文本内容控件,并将表单放入组拼写检查和单词计数,同时“锁定”表单的其余部分,则用户内容控件不允许字符限制,并且在分组表单中使用旧版/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), "")

如果我正确理解你的问题

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" 
  • 使用
    CreateObject
    创建一个新单词实例

  • 确保
    .Visible=False
    (我认为这是默认设置)

  • 在该实例中创建新文档

  • 将要签入的文本复制到该

  • 拼写检查

  • 删除文档和Word实例


  • 这需要用文字表达吗?是的,不幸的是,确实需要。那么,情况就相当糟糕了。我还没有检查可行性,但是你能用.visible=false创建一个新的单词实例,将文本复制到文档中,并进行拼写检查吗?听起来是个好主意。我只是希望它不会在发现拼写错误的单词后变得可见。感谢you@bibadia你真是个天才!我所说的表单不是指用户表单,而是指数据收集表单。真的想不出更好的方式来描述它。我转到开发人员-->限制编辑-->填写表单以锁定文档,并且只允许在有文本框的情况下进行编辑。