Word 2022邮件合并VBA问题:误将文件夹识别为不存在的Excel文件
问题原因及解决方案
你的代码核心问题是Connection字符串中错误地将变量名StrMMSrc作为字符串字面量使用,而非引用变量的实际值,导致OLEDB驱动无法正确识别你选择的Excel文件路径,进而错误解析成了不存在的Office Database.xls文件(路径里的空格被错误截断,驱动把文件夹名当成了文件名)。
另外还有两个潜在问题需要修正:
- SQL语句中引用Excel工作表时,标准格式应为
'工作表名$'(需加$后缀),否则可能无法识别工作表 - 手动指定Connection字符串容易出错,可简化
OpenDataSource参数,让Word自动处理数据源连接
修正后的代码
Private Sub Document_Open() 'Application.ScreenUpdating = False Dim StrMMSrc As String With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker) .Title = "数据源选择器" .AllowMultiSelect = False .Filters.Add "Excel文件", "*.xls; *.xlsx; *.xlsm", 1 .InitialFileName = "" If .Show <> -1 Then GoTo ErrExit StrMMSrc = .SelectedItems(1) End With With ActiveDocument.MailMerge ' 简化参数,让Word自动处理Excel数据源连接 .OpenDataSource Name:=StrMMSrc, _ ReadOnly:=True, _ AddToRecentFiles:=False, _ LinkToSource:=False, _ SQLStatement:="SELECT * FROM 'Students$'" End With ErrExit: Application.ScreenUpdating = True End Sub
关键修正点说明
修复Connection字符串问题:移除了手动拼接的Connection参数,让Word自动适配Excel数据源的OLEDB连接,避免路径拼接错误。若坚持手动指定Connection,正确写法应为:
Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;" & _ "Data Source=" & StrMMSrc & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";"注意这里是
"Data Source=" & StrMMSrc,而非"Data Source=StrMMSrc",这样才会把变量的实际路径值插入到连接字符串中。修正工作表引用格式:将
'Students'改为'Students$',这是Excel OLEDB驱动识别工作表的标准格式(若工作表名含空格,需用'学生信息$'这类带单引号的格式)。优化代码逻辑:把
Else GoTo ErrExit简化为If .Show <> -1 Then GoTo ErrExit,让代码更简洁。
额外注意事项
- 确保你选择的Excel文件中确实存在名为
Students的工作表 - 若仍弹出“选择表格”窗口,说明驱动无法识别工作表,检查工作表名是否正确,或尝试在SQL语句中使用
[Students$]格式
内容的提问来源于stack exchange,提问作者Rizz Kid
相关产品推荐
相关产品推荐

