我创建了一个 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”文档混淆?
Jonsson 的评论准确地回答了问题。
我不知道前几天出了什么问题,但是使用语法
SELECT * FROM [Students$] Order by [Grade] ASC, [Last Name] ASC, [First Name] ASC
非常感谢 Jonsson,您花费时间和精力来帮助我。