拼写检查_拼写检查VBA或VB6 ActiveX文本框

拼写检查

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that follows allows you to easily do just that.

如果您曾经使用过Microsoft Word,那么您就会知道它具有良好的拼写检查器,并且您可能会想到,检查拼写的功能可能是添加到您的某些应用程序中的不错的功能。 好吧,下面的代码使您可以轻松地做到这一点。

A few things to note about the code.

有关代码的几点注意事项。

o Microsoft Word must be installed on your PC and on any of your users' PCs in order for this code to work

o必须在您的PC和任何用户的PC上安装Microsoft Word,此代码才能起作用

o No Reference to Word is required in your application

o您的应用程序中无需引用Word

o The code as shown will check spelling but you can also have it check grammar by changing the objDoc.CheckSpelling line  to objDoc.CheckGrammar

○代码所示将检查拼写,但你也可以拥有它通过改变objDoc.CheckSpelling线objDoc.CheckGrammar检查语法

o You can replace the textbox with a RichTextbox if you like and the code will work with it as well

o如果愿意,可以将文本框替换为RichTextbox,并且代码也可以使用

o In Excel you will need to remove the App.OleRequestPendingTimeout = 999999 line

o在Excel中,您将需要删除App.OleRequestPendingTimeo ut = 999999

o The code expects an ActiveX textbox named "Text1" and an ActiveX command button named "SpellCheck"

o该代码需要一个名为“ Text1”的ActiveX文本框和一个名为“ SpellCheck”的ActiveX命令按钮

Private Sub SpellCheck_Click()

    Dim objWord As Object
    Dim objDoc  As Object
    Dim strResult As String
    Const QUOTE = """"
    
    On Error GoTo ErrorRoutine

    App.OleRequestPendingTimeout = 999999
    Set objWord = GetObject("Word.Application")
    If TypeName(objWord) <> "Nothing" Then
        ' Word is already open
        Set objWord = GetObject(, "Word.Application")
    Else
        ' Create an instance of Word
        Set objWord = CreateObject("Word.Application")
    End If

    Select Case objWord.version
        'Office 2000 and later
        Case "9.0", "10.0", "11.0", "14.0", "15.0"
            Set objDoc = objWord.Documents.Add(, , 1, True)
        'Office 97
        Case "8.0"
            Set objDoc = objWord.Documents.Add
        Case Else
            MsgBox "Sorry but your version of Word seems to be " & QUOTE & objWord.version _
                   & QUOTE & " and that version is not currently supported.", vbOKOnly + vbExclamation, "Spelling Checker"
            Exit Sub
    End Select

    objDoc.Content = Text1.Text
    objDoc.CheckSpelling
    objWord.Visible = False

    strResult = Left(objDoc.Content, Len(objDoc.Content) - 1)
    ' Reformat carriage returns
    strResult = Replace(strResult, Chr(13), Chr(13) & Chr(10))
    
    If Text1.Text = strResult Then
        ' There were no errors, so give the user a
        ' visual signal that something happened
        MsgBox "No changes made", vbInformation + vbOKOnly, "Spelling Checker"
    End If
    
    'Clean up
    objDoc.Close False
    Set objDoc = Nothing
    objWord.Application.Quit True
    Set objWord = Nothing

    ' Replace the selected text with the corrected text. It's important that
    ' this be done after the "Clean Up" because otherwise there are problems
    ' with the screen not repainting
    Text1.Text = strResult

    Exit Sub


ErrorRoutine:

    Select Case Err.Number
        Case -2147221020
            ' There's no instance of Word so continue processing in order to create one
            Resume Next
        Case 429
            MsgBox "Word must be installed in order for this code to work", vbCritical + vbOKOnly, "Spelling Checker"
    End Select

End Sub

The following is a picture of the code in action. (Talking about 'action', the desktop picture behind the spell checker is me being tossed out of a boat while white water river rafting:) )

以下是运行中的代码的图片。 (谈到“动作”,拼写检查器后面的桌面图片是我在激流泛舟时被抛出小船:)

Spellcheck.jpg

When the code is run, misspelled words are colored red and so after I clicked the 'Spell Check' button the word "nicly" was highlighetd in be red by Word.

运行代码时,拼写错误的单词被涂成红色,因此在单击“拼写检查”按钮后,单词“ nicly”被Word高亮显示为红色。

If you have any comments, questions or problems please let me know.

如果您有任何意见,疑问或问题,请告诉我。

Finally, if you find that this article has been helpful, please click the “thumb’s up” button below. Doing so lets me know what is valuable for EE members and provides direction for future articles. It also provides me with positive feedback in the form of a few points. Thanks!

最后,如果您发现本文对您有所帮助,请单击下面的“竖起大拇指”按钮。 这样做可以让我知道对EE成员有价值的内容,并为以后的文章提供指导。 它还以几点的形式为我提供了积极的反馈。 谢谢!

翻译自: https://www.experts-exchange.com/articles/8678/Spell-check-a-VBA-or-VB6-ActiveX-textbox.html

拼写检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值