使用书签访问 Word,如果书签留空,如何执行操作
Posted
技术标签:
【中文标题】使用书签访问 Word,如果书签留空,如何执行操作【英文标题】:Access to Word using Bookmarks, how to perform an action if a bookmark is left blank 【发布时间】:2020-12-27 22:11:12 【问题描述】:在这里访问相当新,我觉得这应该是一个非常简单的修复,但我尝试的一切都不起作用。
基本上我想做的是为我正在处理的数据库制作一个沼泽标准的字母生成按钮,它工作得很好,除非我正在拉出所有的表单上没有填写字段数据关闭。例如,我可以选择第二个地址行,但并非所有地址都有一个,因此通常留空,但这意味着我的地址如下所示:
地址线 1
小镇 县 邮编
当我希望它们看起来像这样时:
地址线 1 镇 县 邮编
我已经尝试了所有看起来的方法,但似乎没有任何效果!
感谢您提供的任何建议或帮助!
这是我的代码
Private Sub btnManagerLetter_Click()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim rs As DAO.Recordset
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("\\middle\Data\DataBaseWordDocs&Ding\ding\InsCoLtrTemplate.docx")
Set rs = CurrentDb.OpenRecordset("qryManagerDetails")
wdApp.Visible = True
wdDoc.Bookmarks("ManagerName").Range.Text = Nz(rs![Manager Name], "")
wdDoc.Bookmarks("AddressLine1").Range.Text = Nz(rs![Address Line 1], "")
wdDoc.Bookmarks("AddressLine2").Range.Text = Nz(rs![Address Line 2], "")
wdDoc.Bookmarks("Town").Range.Text = Nz(rs![Town], "")
wdDoc.Bookmarks("County").Range.Text = Nz(rs![County], "")
wdDoc.Bookmarks("PostCode").Range.Text = Nz(rs![Post Code], "")
End Sub
【问题讨论】:
【参考方案1】:我建议为您将其粘贴为块的地址添加一个书签。
使用辅助函数构建地址字段,仅当新字符串不为 Null 时才附加。
例如:
Public Function Append(ByVal originalString As String, ByVal newString As String, Optional ByVal separator As String = " ") As String
If Len(newString) > 0 Then
AppendString = originalString & separator & newString
Else
AppendString = originalString
End If
End Function
然后只需构建地址块并将其作为单个字符串一起插入书签。
Sub T()
Dim address As String
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
您可以根据需要更改分隔符,空格 " "
或换行符 vbNewLine
。
【讨论】:
感谢您的帮助,不知道应该把公共函数放在哪里,我试着把它放在一个模块中,但它说“地址”是一个未定义的变量。 地址是btnManagerLetter_Click()
方法中保存地址的本地字符串变量。 Append()
方法可以在与上述方法相同的文件中私有。
啊,我明白了,我忘记在我的 sub 中添加 Dim address As String。现在是说'AppendString'(公共函数的第3行)是一个未定义的变量?
我刚刚删除了“字符串”,所以它现在显示为 Append = original string &...,这就成功了! @KostasK 非常感谢您的帮助!!!!以上是关于使用书签访问 Word,如果书签留空,如何执行操作的主要内容,如果未能解决你的问题,请参考以下文章
OpenXML - 将书签应用于 Word 文档中的段落