自动邮件合并选择源文件

问题描述 投票:0回答:1

我创建了一个 Word (2022) 邮件合并文档。我将 .docx 更改为 .docm,以便对生成的输出进行邮件合并后处理。

我想允许选择源数据文件。

我找到了Automated Word VBA MailMerge,它描述了我想要执行的操作。在我的邮件合并文档中,我现在有:

Private Sub Document_Open()
'    Application.ScreenUpdating = False
    Dim StrMMSrc As String
    With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
        .Title = "Data Source Selector"
        .AllowMultiSelect = False
        .Filters.Add "Documents", "*.xls; *.xlsx; *.xlsm", 1
        .InitialFileName = ""
        If .Show = -1 Then
            StrMMSrc = .SelectedItems(1)
        Else
            GoTo ErrExit
        End If
    End With
    With ActiveDocument.MailMerge
        .OpenDataSource Name:=StrMMSrc, ReadOnly:=True, AddToRecentFiles:=False, _
          LinkToSource:=False, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;" & _
          "Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
          SQLStatement:="SELECT * FROM 'Students'"
    End With
ErrExit:
    Application.ScreenUpdating = True

当我打开合并文档时,我可以单步执行 Document_Open 代码。 FileDialog 工作,向我显示文件夹 C:\Gld\RT\Office Database,然后我选择文件“Database 2022-23.xlsx”。变量 StrMMSrc 设置为我选择的文件“C:\Gld\RT\Office Database\RT Database 2022-23 Test.xlsx”。但随后它弹出一个窗口“选择表”,显示没有表。如果我下拉“工作簿”,它会显示 2 个旧的 Excel 文档和一个名为“C:\Gld\RT\Office Database.xls”的文档,该文档不存在。

为什么会将“Office Database”文件夹与不存在的“Office Database.xls”文档混淆?

vba ms-word mailmerge
1个回答
0
投票

Jonsson 的评论准确地回答了问题。

我不知道前几天出了什么问题,但是使用语法

SELECT * FROM [Students$] Order by [Grade] ASC, [Last Name] ASC, [First Name] ASC

今天工作正常。

非常感谢 Jonsson,您花费时间和精力来帮助我。

© www.soinside.com 2019 - 2024. All rights reserved.