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

Word Mail Merge技术求助:如何自动添加同一银行交易表格行

解决Word邮件合并中同一银行多行交易合并到单信函表格的问题

前提准备

  • 先将Excel数据源按「银行名」列排序,确保同一银行的所有交易行连续排列,这是代码能正确合并的基础。
  • 在Word中创建邮件合并主文档:插入带表头的表格(比如表头为「交易日期」「交易金额」「交易类型」),第二行留空,插入对应合并域(如«交易日期»),完成数据源关联但不要执行合并。

VBA代码实现自动合并

按Alt + F11打开VBA编辑器,右键当前文档插入「模块」,粘贴以下代码(根据你的实际字段名和表格结构修改):

Sub MergeSameBankTransactions()
    Dim mainDoc As Document
    Dim dataSource As MailMergeDataSource
    Dim tableTarget As Table
    Dim currentBank As String
    Dim nextBank As String
    Dim rowIndex As Integer
    
    Set mainDoc = ActiveDocument
    Set dataSource = mainDoc.MailMerge.DataSource
    Set tableTarget = mainDoc.Tables(1) '假设文档第一个表格是交易表格
    
    dataSource.ActiveRecord = wdFirstRecord
    currentBank = dataSource.DataFields("银行名").Value
    rowIndex = 2 '表头为第1行,数据从第2行开始
    
    Do Until dataSource.ActiveRecord = wdLastRecord
        '将当前交易数据写入表格行
        tableTarget.Cell(rowIndex, 1).Range.Text = dataSource.DataFields("交易日期").Value
        tableTarget.Cell(rowIndex, 2).Range.Text = dataSource.DataFields("交易金额").Value
        tableTarget.Cell(rowIndex, 3).Range.Text = dataSource.DataFields("交易类型").Value
        '根据你的实际字段和表格列数调整上述代码
        
        '切换到下一条记录
        dataSource.ActiveRecord = wdNextRecord
        nextBank = dataSource.DataFields("银行名").Value
        
        '判断是否为同一银行,是则新增行,否则生成信函并重置
        If nextBank = currentBank Then
            tableTarget.Rows.Add
            rowIndex = rowIndex + 1
        Else
            mainDoc.MailMerge.Destination = wdSendToNewDocument
            mainDoc.MailMerge.Execute False
            '清空当前数据行,准备下一个银行
            tableTarget.Rows(2).Delete
            rowIndex = 2
            currentBank = nextBank
        End If
    Loop
    
    '处理最后一条记录
    tableTarget.Cell(rowIndex, 1).Range.Text = dataSource.DataFields("交易日期").Value
    tableTarget.Cell(rowIndex, 2).Range.Text = dataSource.DataFields("交易金额").Value
    tableTarget.Cell(rowIndex, 3).Range.Text = dataSource.DataFields("交易类型").Value
    mainDoc.MailMerge.Destination = wdSendToNewDocument
    mainDoc.MailMerge.Execute False
    
    MsgBox "合并完成!"
End Sub

注意事项

  • 确保Excel中「银行名」字段的内容完全一致(无空格、大小写差异),否则会被识别为不同银行。
  • 运行前备份数据源和Word主文档,避免数据丢失。
  • 若表格列数或字段名不同,需对应修改代码中tableTarget.Cell(rowIndex, N)的列序号和DataFields("字段名")的字段名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:07:22