vba - Excel 邮件合并运行时错误 4198

标签 vba excel mailmerge

之前 stackoverflow 上有一个问题:
“是否可以从 Excel 宏启动邮件合并(通过单击工作表上的按钮) 我有包含数据的 Excel 工作表,想要将其导出到新的 Word 文档。” dendarii 772 于 2009 年 9 月 29 日 12:39 回答了此问题。

我们也有这种需求,因为我们希望简化计算机技能有限的志愿者的生活。

不幸的是,使用合适的路径修改后的 dendarii 代码在 .OpenDataSource 语句处退出并出现运行时错误 4198。

Cindy Meister 在 Microsoft Office for Developer's Form 上写作> ..>Word 2010 VBA 建议 4198 错误可能是由于同步问题造成的。我放弃了,但没有成功。

Andrew Poulson 在撰写有关 Excel 先生的文章时鼓励贡献者 Snecz 将他的 VBA 邮件合并 .OpenDataSource 语句与 Word 宏记录进行比较。贡献者有何看法?我的 .OpenDataSource 行似乎是标准的。我的Excel 数据源文件有一行标题,后跟两行数据元素。

我们有 Office 2010。

如果有人知道一般诊断程序,我将非常感谢任何有关如何修复 4198 的建议。我们是两个人为之工作 一个慈善组织。欢迎任何帮助!

 Sub RunMerge()  
     
    Dim wd As Object   
    Dim wdocSource As Object  
       
    Dim strWorkbookName As String  
     
    On Error Resume Next   
    Set wd = GetObject(, "Word.Application")   
    If wd Is Nothing Then   
    Set wd = CreateObject("Word.Application")   
    End If   
    On Error GoTo 0   
       
    Set wdocSource = wd.Documents.Open("C:\Users\george\Desktop\VBA Project\Mergeletter.docx")   
       
    strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name   
        
    wdocSource.MailMerge.MainDocumentType = wdFormLetters   
       
    wdocSource.MailMerge.OpenDataSource _   
    Name:=strWorkbookName, _   
    AddToRecentFiles:=False, _   
    Revert:=False, _   
    Format:=wdOpenFormatAuto, _      
    Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _  
    SQLStatement:="SELECT * FROM `Sheet1$`"    

    With wdocSource.MailMerge

    .Destination=wdSendToNewDocument

    .SuppressBlankLines = True  
    With .DataSource  
    .FirstRecord = wdDefaultFirstRecord  
    .LastRecord = wdDefaultLastRecord  
    End With  
    .Execute Pause:=False  
    End With  
        
    wd.Visible = True  
    wdocSource.Close SaveChanges:=False     
       
    Set wdocSource = Nothing  
    Set wd = Nothing     

    End Sub  

最佳答案

您有 Word 对象库的引用集吗?如果不是,那么宏将会失败,因为您正在使用该库中找到的特定项目(例如 wdOpenFormatAuto)。

要添加对库的引用,请在 Excel VBA 编辑器中单击“工具”>“引用”,然后向下滚动直至找到“Microsoft Word 对象库”,单击左侧的框“选中它”,然后单击“确定” 。将有一个与之关联的版本号...可能是 14.0,因为您运行的是 Office 2010。

添加该引用即可解决您的问题。

如果您已经拥有该套件,请告诉我们。

关于vba - Excel 邮件合并运行时错误 4198,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022533/

相关文章:

excel - 如何 Swagger 发送 REST 响应 excel 文件?

javascript - 通过 Javascript 的 MS Word 对象模型 : Mail Merge

asp.net - MS Word 邮件合并类似功能,允许从 ASP.Net Web 应用程序导出到 Word 文档

excel - 大写单词的第一个字母而不改变当前大写

excel - 使用excel VBA从字符串数组中删除重复项

excel - 没有循环的进度条

php - MySQL 数据库到 Adob​​e InDesign

ms-access - Access VBA Getobject()

excel - 当我从另一个宏 "Call"时宏不起作用,但是当我单独选择它时它确实起作用

vba - #引用!粘贴为值,但​​在循环时不会被视为值