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

问题描述

在这里可以访问的很新,我觉得这应该是一个非常简单的修复,但是我尝试的所有方法都无法正常工作。

基本上我想做的是为我正在处理的数据库创建一个沼泽标准的字母生成按钮,它工作得很好,除了我要拉动所有表单的字段上没有填写的地方数据关闭。例如,我可以选择第二个地址行,但并非所有地址都有一个地址行,因此通常留空,但这意味着我的地址如下所示:

地址行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

解决方法

我建议为您将其粘贴为块的地址添加一个书签。

使用辅助函数来构建地址字段,仅当新字符串不是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],Nz(rs![County],Nz(rs![Post Code],vbNullString))
    
    wdDoc.Bookmarks("Address").Range.Text = address
End Sub

您可以更改分隔符以满足需要,可以使用空格" "或换行符vbNewLine