MS Access 2013:通过VBA使用MS Word的语法检查

磁通

(问题下方的解决方案)

我有一个访问表单,该表单允许用户在文本框(MYFIELD)中输入文本。用户退出字段时,我已经自动设置了拼写检查选项

Private Sub MYFIELD_Exit(Cancel As Integer)
Dim strSpell
    strSpell = MYFIELD
    If IsNull(Len(strSpell)) Or Len(strSpell) = 0 Then
       Exit Sub
    End If
    With MYFIELD
        .SetFocus
        .SelStart = 0
        .SelLength = Len(strSpell)
    End With
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdSpelling
    DoCmd.SetWarnings True

End Sub

我还想启用语法检查。由于它不是在Access中构建的,因此我需要使用word的,但是我不知道该怎么做。

我在论坛上找到了此代码

1)张贴此内容的人说他的用户“将文本输入一个大控件。然后将该控件合并到word文档中”。我的字段只是一个长文本字段,所以我仍然可以使用(或改编)下面的代码吗?

2)如果是,我不确定如何将其与代码混合使用(尽管我进行了所有搜索-我对VBA并不熟悉,但我不知道如何从表单中调用此Public Function):

Public Function SpellIt(ctl As Control)
   Dim wdApp As Word.Application
   Dim wdDoc As Word.Document


    On Error GoTo SpellIt_Err

   Set wdApp = New Word.Application

      If Not IsNull(ctl) Then
         Set wdDoc = wdApp.Documents.Add
         wdApp.Selection.Text = ctl
         wdApp.Dialogs(wdDialogToolsSpellingAndGrammar).Show
         If Len(wdApp.Selection.Text) <> 1 Then
            ctl = wdApp.Selection.Text
         Else
            wdDoc.Close wdDoNotSaveChanges
            wdApp.Quit
            Set wdApp = Nothing
            Exit Function
         End If
         wdDoc.Close wdDoNotSaveChanges
      End If

   wdApp.Quit
   Set wdApp = Nothing

   MsgBox "Spelling and Grammar Check Complete.", vbInformation, "Microsoft Word Spelling And Grammar:"
   Exit Function

SpellIt_Err:
    Err.Clear
    ctl.Undo
    MsgBox "We encountered an error in it's conversation with Microsoft Word regarding your comment." & vbCrLf & _
        "As a precaution, any changes made within the grammar and spelling dialog box have not been retained.", _
        vbCritical, "Spelling and Grammar Check NOT Complete:"
End Function

非常感谢你的帮助!

这里是解决方案:(我需要将ctl更改为ctrl)

Private Sub Description_Exit(Cancel As Integer)
Call SpellIt(Description)
End Sub
Public Function SpellIt(ctrl As Control)
   Dim wdApp As Word.Application
   Dim wdDoc As Word.Document


    On Error GoTo SpellIt_Err

   Set wdApp = New Word.Application

      If Not IsNull(ctrl) Then
         Set wdDoc = wdApp.Documents.Add
         wdApp.Selection.Text = ctrl
         wdApp.Dialogs(wdDialogToolsSpellingAndGrammar).Show
         If Len(wdApp.Selection.Text) <> 1 Then
            ctl = wdApp.Selection.Text
         Else
            wdDoc.Close wdDoNotSaveChanges
            wdApp.Quit
            Set wdApp = Nothing
            Exit Function
         End If
         wdDoc.Close wdDoNotSaveChanges
      End If

   wdApp.Quit
   Set wdApp = Nothing

   MsgBox "Spelling and Grammar Check Complete.", vbInformation, "Microsoft Word Spelling And Grammar:"
   Exit Function

SpellIt_Err:
    Err.Clear
    ctl.Undo
    MsgBox "We encountered an error in it's conversation with Microsoft Word regarding your comment." & vbCrLf & _
        "As a precaution, any changes made within the grammar and spelling dialog box have not been retained.", _
        vbCritical, "Spelling and Grammar Check NOT Complete:"
End Function
bmgh1985

好的,您似乎对实际的功能感到困惑。函数具有形式Function(Arguments),可以在Sub内部调用。它不能独立运行,因此不应被视为独立运行。可以使用的示例是MsgBox()您调用该MsgBox函数,该函数接受一个参数(在这种情况下为一个或多个参数),并将其放入函数中,将其转换为所需的内容。

首先是第一件事。您拥有的文本框称为MYFIELD。那就是您的控制权。最好不要让Function具有相同的名称。将其重命名为Public Function ButChng(ctrl as Control)该功能本身并不需要从最初的外观上进行修改。

在您的MYFIELD_Exit子目录中,您所需要做的就是调用该函数。因此它将显示为:

Private Sub MYFIELD_Exit(Cancel As Integer)
Call ButChng(MYFIELD) 'this puts the MYFIELD control as your variable to go through ButChng
Exit Sub

然后,它将按预期工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Int()函数MS Access VBA

来自分类Dev

如何使用MS Access中触发的VBA更改MS Word文档中形状的颜色?

来自分类Dev

MS Access查询中的语法错误?

来自分类Dev

如何使用MS Word 2007 VBA检查窗口版本

来自分类Dev

MS Access VBA IF()

来自分类Dev

MS Access 2013查询条件

来自分类Dev

通过VBA在MS Access中编辑当前对象的SQL

来自分类Dev

从VBA SQL语法错误将MS EXCEL转换为MS ACCESS .accdb数据库

来自分类Dev

MS ACCESS SQL连接语法

来自分类Dev

SQL语法问题MS Access VBA

来自分类Dev

MS Access查询语法

来自分类Dev

MS-Access:使用vba移至NavigationControl

来自分类Dev

使用Word Docs和MS Access生成完整的PDF表单

来自分类Dev

MS Word:如何禁用自定义样式上的拼写/语法检查

来自分类Dev

MS Access查询中的语法错误?

来自分类Dev

MS Access 2013:嵌套的IIF语法错误

来自分类Dev

如何在MS Access 2013报表中复制MS Word文档的布局和格式

来自分类Dev

语法错误MS Access SQL

来自分类Dev

MS Access VBA,SQL脚本:In(),<>和AND语法

来自分类Dev

使用VBA显示MS Access报告

来自分类Dev

MS ACCESS vba-错误

来自分类Dev

MS Access查询中的语法错误

来自分类Dev

SQL MS Access 2013年

来自分类Dev

MS Access VBA / SQL检查任何子级

来自分类Dev

MS Access sql - 更新查询语法

来自分类Dev

编译错误:语法错误 MS Access 2013

来自分类Dev

VBA (Ms-Access) 2013 溢出错误

来自分类Dev

MS Access VBA 运行查询

来自分类Dev

MS Access VBA - 使用日期过滤表单