ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

有关邮件合并中的一个难题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-5-16 16:33 | 显示全部楼层 |阅读模式

想把EXCEL中的数据通过邮件合并的方法填入到WORD中,具体要求如下

1、以性别男、女分开,再根据毕业学校分割,即只有性别一致的同一毕业学校的同学才能在同一张表中;如果一张表不能把同一性别同一毕业学校的数据填完,可用多张表。

2、每张表共有3列10行,其中第2至第9行填EXCEL中的数据。如果同一性别同一毕业学校的数据在一张表中填不满,这张表的余下几行要求为空。

这个问题搞了好几天,就是搞不好,只好求助这儿的高手了~~

数据请见附件。

kS806uIF.rar (14.89 KB, 下载次数: 35)
[此贴子已经被作者于2005-5-16 16:36:04编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-17 16:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

同一学校、相同性别的同学才能汇总到一个表,换言之就是相同条件的可以看作一个独立的数据源,如此条件,用邮件合并没多大意义,还不如直接排序后剪切来得痛快。

当然,如果数据非常庞大,也可以考虑用邮件合并。只是这个邮件合并恐怕得借助编程实现了。

TA的精华主题

TA的得分主题

发表于 2005-5-18 05:00 | 显示全部楼层

这个问题,为什么要这么做?有些不可思议(一时搞糊涂了)

如果必需这么做,使用常规意义上的邮件合并,是做不到的,因为WORD不仅要判断下一记录与当前记录是否一致(性别),还需要移到另一个表格中,那么,必然使用开发的邮件合并,见http://club.excelhome.net/viewthread.php?tid=79814

个人意见,还是用分类汇总进行比较方便.

如果需要编程,也比较烦,而且感觉由于你的排版(四个表格)限制,也不太好搞.

看吧,如果楼主必须,那守柔只好尽力了,(或者自动化(AUTOMATION),或者采用邮件合并),也许能够做到吧.

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-18 10:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢守版主的关注,这个问题不为什么,最终目的是为了打印~~只要达到这个目标,就可以了

至于一张纸中几个表格,以及用什么方法,这些都无所谓~~

TA的精华主题

TA的得分主题

发表于 2005-5-18 14:11 | 显示全部楼层

这是一个EXCEL中通过AUTOMATION调用WORD的一个方法。

注意事项:

一:EXCEL宏安全性为低;

二:两个文件解压于同一文件夹下

三:可以修改考生名单.DOT中的自动图文集格式

四:有其它要求,可以一并提出和交流

五:非完全版本,可以试用后再作交流.

OmXaPRgR.zip (22.53 KB, 下载次数: 31)

以下代码为EXCEL中模块中供参考:

Option Explicit Sub WriteInWord() Dim LastAddress As String, MyRange As Range, i As Range, WorkRange As Range Dim WordApp As New Word.Application, WdDoc As Word.Document, N As Integer With Sheets(1) LastAddress = .[D65536].End(xlUp).Address '取得D列最后一个有数据单元 Set MyRange = .Range("A1:" & LastAddress) '定义一个RANGE对象 '对此对象进行升序排序,以C列为主要排序依据,以D列为第二排序依据 MyRange.Sort Key1:=.[C2], Order1:=xlAscending, Key2:=.[D2], Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _ :=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal Set WorkRange = .Range("D2:" & LastAddress) '定义一个RANGE对象 End With '定义一个WORD文档对象,为同一路径下的一个模板文档 Set WdDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\考生名单.DOT") For Each i In WorkRange '在指定RANGE对象中循环 '当N=0或者此单元格与上一单元格不同时(两个)或者N>9时 If N = 0 Or i <> i.Offset(-1, 0) Or i.Offset(, -1) <> i.Offset(-1, -1) Or N > 9 Then N = 0 '初始化N值 '向WORD模板文档添加一个自动图文集(保持格式) WdDoc.AttachedTemplate.AutoTextEntries("考生名单").Insert where:=WdDoc.Windows(WdDoc).Selection.Range, _ RichText:=True '插入性别 WdDoc.Tables(WdDoc.Tables.Count).Cell(2, 2).Range = i End If With WdDoc.Tables(WdDoc.Tables.Count) N = N + 1 '累加 '报名号 .Cell(N + 3, 1).Range = i.Offset(, -3) '姓名 .Cell(N + 3, 2).Range = i.Offset(, -2) '毕业学校 .Cell(N + 3, 3).Range = i.Offset(, -1) End With Next '显示WORD程序 WordApp.Visible = True End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-18 15:12 | 显示全部楼层
我把这个文件解压到同一目录中,然后运行excel数据源.xls这个文件(启用宏),再打开的文件中单击按钮,出现错误,提示:找不到工程或库。

TA的精华主题

TA的得分主题

发表于 2005-5-18 15:54 | 显示全部楼层

你是什么版本的OFFICE?

2000吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-18 20:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-5-18 20:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请打开EXCEL工作薄(我的附件中)

ALT+F11,进入VBE(VB编辑器)

工具/引用:在引用对话框中,改引用为如下图所示的MICROSOFT WORD 9.0 OBJECT LIBRARY(我用的是XP,所以为10.0,而你没有10.0,所以出错)

去除原有的10.0引用,保存工作薄.

注意,应该在当前工作薄的代码窗口中,见VB编辑器标题栏应为活动工作薄名.

有关邮件合并中的一个难题

有关邮件合并中的一个难题

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-18 20:54 | 显示全部楼层
提示DataOption1:=xlSortNormal这句话是变量未定义~~[em06]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-14 15:08 , Processed in 0.040402 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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