我需要创建一个按钮来从Access子窗体到Word进行邮件合并

时间:2016-07-25 00:00:20

标签: vba ms-access mailmerge

我创建了一个客户端数据库。在数据库中,每个客户端都按唯一的公司ID进行分组。用户可以通过在主窗体上的以下单元格中输入公司ID来搜索公司中的所有客户端。

([Forms]![frmNavigationForm]![Text78])

现在我想通过点击主表单上的按钮,从子表单到单词的邮件合并。

我从以下链接中获得了一些想法:Access and Word 2010 merging one record depending on subform button clicked

问题: 当我尝试运行代码时,它显示运行时错误" 4198":命令失败。

当我运行debug时,此命令突出显示

.OpenDataSource Name:=sData, SQLStatement:=strSQL

有人可以告诉我如何修复错误吗?

Private Sub Command203_Click()

Dim mDoc As String
Dim strSQL As String

mDoc = "C:\~~~\800052 ENG w Macro titus.docx"
strSQL = "SELECT * FROM![frmNavigationForm]![frmKYCGenerator] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78]

Dim oApp As New Word.Application
Dim oMainDoc As Word.Document
Dim sData As String

   oApp.Visible = True
      Data = "C:\~~~\Database - Users - PR.accdb"

   Set oMainDoc = oApp.Documents.Open(mDoc)

      With oMainDoc.MailMerge
      .MainDocumentType = wdFormLetters
      .OpenDataSource Name:=sData, SQLStatement:=strSQL
      End With

   With oMainDoc
       .MailMerge.Destination = wdSendToNewDocument
       .MailMerge.Execute
   End With

   oApp.Activate
   oApp.Documents.Parent.Visible = True
   oApp.Application.WindowState = 1
   oApp.ActiveWindow.WindowState = 1

Set oApp = Nothing
Set oMainDoc = Nothing

Exit Sub

Err_Handle:
   Set oApp = Nothing
   Set oMainDoc = Nothing
      MsgBox "An error occurred..." & vbCrLf & vbCrLf & Err.Description
End Sub

2 个答案:

答案 0 :(得分:0)

您的数据源名称可能为空。我认为:

Data = "C:\~~~\Database - Users - PR.accdb"

应该是:

sData = "C:\~~~\Database - Users - PR.accdb"

答案 1 :(得分:0)

在模块代码的顶部添加Option Explicit

这会发现@peter和任何其他未声明或拼写错误变量

确定的问题

看起来你在SQL中合并了几个名字 我假设你知道你在SQL语句中做了什么 - 你忘了表名 - 或者你实际上使用[frmNavigationForm]![frmKYCGenerator]

定义的查询/表

因为你没有提到任何表名,我会假设后者。在那种情况下......

更改此

strSQL = "SELECT * FROM![frmNavigationForm]![frmKYCGenerator] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78]

到此

strSQL = "SELECT * FROM [" & [Forms]![frmNavigationForm]![frmKYCGenerator] & "] WHERE [RS ID]=" & [Forms]![frmNavigationForm]![Text78]