You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键修正点说明

  1. 修复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",这样才会把变量的实际路径值插入到连接字符串中。

  2. 修正工作表引用格式:将'Students'改为'Students$',这是Excel OLEDB驱动识别工作表的标准格式(若工作表名含空格,需用'学生信息$'这类带单引号的格式)。

  3. 优化代码逻辑:把Else GoTo ErrExit简化为If .Show <> -1 Then GoTo ErrExit,让代码更简洁。

额外注意事项

  • 确保你选择的Excel文件中确实存在名为Students的工作表
  • 若仍弹出“选择表格”窗口,说明驱动无法识别工作表,检查工作表名是否正确,或尝试在SQL语句中使用[Students$]格式

内容的提问来源于stack exchange,提问作者Rizz Kid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:15:36