ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3240|回复: 14

[求助] word实现excel中多行数据的邮件合并~江湖救急!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-9 21:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
      各位大神现有excel数据表“hjxx”,需要使用word当中的邮件合并功能,将excel数据表“hjxx”中每一户的信息(多行数据),按照户制作成word调查表(最多13个成员即13行数据)签字确认,请各位大神赐教!ps:表中所有信息都已做处理不是真实信息

excel数据

excel数据

word邮件合并后实现的结果

word邮件合并后实现的结果
我在网上找到了压缩包中pdf格式的多行数据邮件合并教程,但试编辑域代码时第一列数据正常显示,到第二列时还显示的上一行数据,一直找不出原因




补充内容 (2020-6-17 22:56):
12楼更新了用邮件合并的解决方案

补充内容 (2020-6-17 23:04):
wps执行域代码效率很低 配置低的机器会死机 建议使用word

邮件多行合并.zip

418.99 KB, 下载次数: 54

TA的精华主题

TA的得分主题

发表于 2020-6-11 08:56 | 显示全部楼层
Sub 填充word()
Application.ScreenUpdating = False
Dim i%, d, myPath$, wdApp, wdD
Set wdApp = CreateObject("word.application")
Set d = CreateObject("scripting.dictionary")
myPath = ThisWorkbook.Path & "\"
ar = Sheet1.[a1].CurrentRegion
For i = 2 To UBound(ar)
    If Trim(ar(i, 2)) <> "" Then
        d(Trim(ar(i, 2))) = ""
    End If
Next i
For Each k In d.keys
    n = 0
    ReDim br(1 To UBound(ar), 1 To 16)
    For i = 2 To UBound(ar)
        If Trim(ar(i, 2)) = k Then
            n = n + 1
            br(n, 1) = ar(i, 5)
            br(n, 2) = ar(i, 8)
            br(n, 3) = ar(i, 9)
            br(n, 4) = ar(i, 10)
            br(n, 5) = ar(i, 12)
            br(n, 6) = ar(i, 13)
            br(n, 7) = ar(i, 14)
            br(n, 8) = ar(i, 15)
            If Trim(ar(i, 16)) = "是" Then
                br(n, 9) = ar(i, 17)
                br(n, 10) = ar(i, 18)
            ElseIf Trim(ar(i, 16)) = "否" Then
                br(n, 9) = ""
                br(n, 10) = ""
                br(n, 11) = "否"
            End If
            br(n, 12) = ar(i, 19)
            br(n, 13) = ar(i, 20)
            br(n, 14) = ar(i, 21)
            br(n, 15) = ar(i, 22)
            br(n, 16) = ar(i, 23)
            zz = ar(i, 11)
            hz = ar(i, 5)
        End If
    Next i
    FileCopy myPath & "调查表模板.docx", myPath & "生成的文件\" & hz & "调查表.docx"
    Set wdD = wdApp.Documents.Open(myPath & "生成的文件\" & hz & "调查表.docx")
    wdApp.Visible = False
    With wdD.Tables(1)
        For i = 1 To n
            For j = 1 To UBound(br, 2)
                .Cell(i + 5, j).Range.Text = br(i, j)
            Next j
        Next i
    End With
    wdD.Save
    wdD.Close
Next k
wdApp.Quit
    Set wdD = Nothing
    Set wdApp = Nothing
Application.ScreenUpdating = True
MsgBox "ok!"
   
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-9 21:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-6-9 22:29 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
vba代码是可以做到的,先留个足印吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-12 14:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-12 14:45 | 显示全部楼层
授人以鱼,不如授人以渔。vb一直不会弄,有大神按邮件合并的思路作一下的吗,不胜感激!

TA的精华主题

TA的得分主题

发表于 2020-6-12 15:10 | 显示全部楼层
楼主,不要光说感谢,还要说一下 3190496160 老师的代码,运行是否成功,问题是否解决,这是关键。

TA的精华主题

TA的得分主题

发表于 2020-6-12 17:42 来自手机 | 显示全部楼层
413191246se 发表于 2020-6-12 15:10
楼主,不要光说感谢,还要说一下 3190496160 老师的代码,运行是否成功,问题是否解决,这是关键。

说的很有道理,别人给了你帮助最起码要有一个反馈

TA的精华主题

TA的得分主题

发表于 2020-6-12 18:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ysx133 发表于 2020-6-12 14:45
授人以鱼,不如授人以渔。vb一直不会弄,有大神按邮件合并的思路作一下的吗,不胜感激!

蓝版主的一个贴子“用ExcelVBA做的类似邮件合并功能”,楼主可以参考下:
http://club.excelhome.net/thread-1513849-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-17 20:49 | 显示全部楼层
413191246se 发表于 2020-6-12 15:10
楼主,不要光说感谢,还要说一下 3190496160 老师的代码,运行是否成功,问题是否解决,这是关键。

vb直接不会,正找朋友测试呢~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 08:46 , Processed in 0.042694 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表