使用带VBA的mailmerge在MSWord OpenDatasource查询中替换()

使用带VBA的mailmerge在MSWord OpenDatasource查询中替换(),vba,ms-word,mailmerge,mergefield,Vba,Ms Word,Mailmerge,Mergefield,我在数据库中有一个字段,以:。 我的想法是使用{INCLUDEPICTURE“pathname{MERGEFIELD f1}.jpg”,之前将图像的名称与字段值的名称存储在一个文件夹中。 但是,我不能用:字符命名文件,我曾想过在ms word中的OpenDatasource函数中的查询中使用replace函数,但它显然不起作用 代码如下: Private Sub Document_Open() Dim strConnection As String With Me.MailMer

我在数据库中有一个字段,以:。 我的想法是使用{INCLUDEPICTURE“pathname{MERGEFIELD f1}.jpg”,之前将图像的名称与字段值的名称存储在一个文件夹中。 但是,我不能用:字符命名文件,我曾想过在ms word中的OpenDatasource函数中的查询中使用replace函数,但它显然不起作用

代码如下:

Private Sub Document_Open()
    Dim strConnection As String
    With Me.MailMerge
        .MainDocumentType = wdFormLetters
        .OpenDataSource _
           Name:="E:\jobDB.mdb", _
           LinkToSource:=True, AddToRecentFiles:=False, ConfirmConversions:=True, _
           Connection:="TABLE t1", SQLStatement:="SELECT t1.name, replace(t1.f1, """:""", """") as repFld FROM t1;"
    End With
End Sub

Private Sub Document_Close()
   If Me.MailMerge.State = wdMainAndDataSource Then _
      Me.MailMerge.MainDocumentType = wdNotAMergeDocument
End Sub
这样做,我希望删除:并使INCLUDETEXT工作,但这不起作用,当代码执行时,会显示一个对话框供我选择数据库的表

我不知道是否有什么问题,或者是否有其他方法来实现这一点,或者是否有任何字段、标记或标志来替换合并字段中的字符


我只想使用VBA连接到数据源,但我想使用mailmerge,因为我研究了它的工作原理,我可以对条件字段执行我想要的操作,否则我将不得不使用VBA和formfields。

您的帖子不明确。如果字段名的“:”部分或记录名的一部分?如果它是f的一部分如果是字段名的一部分,则必须清理其源数据,因为不能通过SQL或文档中的字段编码删除“:”,并且“:”在文件名中无效。替换函数正在处理该字段e、 不是结果。您必须对从查询返回的数据而不是查询本身运行替换函数。@macropod:“:”是该字段中每个记录值的一部分。在这种情况下,请清理数据…@HackSlash,access sql没有替换功能吗?我在ms access中的一个查询中尝试了它,它成功了。