使用书签但从表单而不是表或查询访问 Word

Posted

技术标签:

【中文标题】使用书签但从表单而不是表或查询访问 Word【英文标题】:Access to Word using bookmarks but from a Form rather than a tbl or qry 【发布时间】:2020-12-28 02:47:01 【问题描述】:

相当新的访问方式,这可能是一种非常奇怪的方式,但情况是这样,我有一个表格,上面有某个经理的信息,例如地址和电子邮件等。我希望能够创建一封信,他们的地址填充在 Word 文档的正确位置,我想我已经走了很远但我遇到了障碍。我不知道如何用表单上的地址填充这个 word 文档,我尝试进行查询,该查询会输出与表单相同的信息,但它不断返回

“运行时错误 3061: 参数太少。预计 1 英寸

现在同样的事情发生了,我去掉了中间人,只在打开记录集命令中放了一条 SQL 语句。

问题出在第 12 行(Starting Set rs = dbs.OpenRecordset...)

感谢您对此提供的任何启发!

Private Sub btnManagerLetter_Click()

    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim rs As DAO.Recordset
    Dim dbs As DAO.Database
    Dim address As String

    Set dbs = CurrentDb
    Set wdApp = New Word.Application
    Set wdDoc = wdApp.Documents.Open("\\middle\Data\DataBaseWordDocs&Ding\ding\InsCoLtrTemplate.docx")
    Set rs = dbs.OpenRecordset("SELECT * FROM tblManagers WHERE (((tblManagers.ManagerRef) Like Me![ManagerRef]))", dbOpenSnapshot)
        
    wdApp.Visible = True

    wdDoc.Bookmarks("ManagerName").Range.Text = Nz(rs![Manager Name], "")
    address = Nz(rs![Address Line 1], vbNullString)
    address = Append(address, Nz(rs![Address Line 2], vbNullString))
    address = Append(address, Nz(rs![Town], vbNullString))
    address = Append(address, Nz(rs![County], vbNullString))
    address = Append(address, Nz(rs![Post Code], vbNullString))
    
    wdDoc.Bookmarks("Address").Range.Text = address

End Sub

【问题讨论】:

【参考方案1】:

必须连接Me![ManagerRef]。不需要所有这些括号。没有通配符的 LIKE 也可能是 = 符号。如果 ManagerRef 是文本类型字段,则需要分隔符。

Set rs = dbs.OpenRecordset("SELECT * FROM tblManagers WHERE ManagerRef ='" &  Me![ManagerRef] & "'", dbOpenSnapshot)

否则,了解使用嵌入式参数:How do I use parameters in VBA in the different contexts in Microsoft Access?

【讨论】:

以上是关于使用书签但从表单而不是表或查询访问 Word的主要内容,如果未能解决你的问题,请参考以下文章

使用书签访问 Word,如果书签留空,如何执行操作

Word VBA“标签未定义”如果书签存在命令

如何使用C#替换书签图像以及单词格式?

收到错误“查询输入必须包含至少一个表或查询”。

如何使用书签在任何网站的页面中显示表单(如 Google Reader 中的 Note)?

访问VBA - 使用书签删除过滤器并保持当前记录