ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

守柔老师,还是前几天的问题!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-13 21:56 | 显示全部楼层 |阅读模式

前几天比较忙,现在就一些问题请教下: 1、我用邮件合并的办法主要是需要产生一些在一定范围内波动的数据,可是word的表格里有随机函数吗》? 2、邮件合并时,因为我用到了随机函数,所以每次WORD不光会用DDE的方式调用EXCEL出来,而且每次因为数据有变化,所以都会提示是否保存?用VBA如何实现退出不保存?我用了VBA加不保存参数后做了个宏,但它把所有的word窗口都关闭了。 3、还发现个问题:如果邮件合并时用的随机函数,如果用DDE方式连接EXCEL,每次会自动更新一次,但用ODBN或其它方式(如*XLS)就不行,是BUG吗? 4、AUTOMATION(自动化)?不懂,这几天啃VBA的时候看了一点

上传个样本给守柔老师看!感谢关心指导,再次感谢!

uMCYxRnV.rar (106.98 KB, 下载次数: 15)

TA的精华主题

TA的得分主题

发表于 2005-4-14 05:38 | 显示全部楼层

先看一下实例再说!

两个注意事项:

一是WORD的宏安全性必须为低.如果为非低,请在工具/宏/宏安全性中设置为低后退出并重启WORD

二是我已将数据源中的随机列数据全部删除,由VBA自动产生随机数,可请下面的代码并进行你需要的修改.

ZLOUYVzA.rar (21.05 KB, 下载次数: 18)

以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-14 5:38:42 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Dim MyApp As New EventClassModule Private Sub Document_Open() Set MyApp.App = Word.Application End Sub '----------------------

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-14 5:38:53 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [类模块-EventClassModule]^' '* -----------------------------

Public WithEvents App As Word.Application '在类模块中声明对应于事件的对象变量。 '编写指定事件的过程。 Private Sub App_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean) Dim i As Byte VBA.Randomize With Doc.Tables(1) For i = 1 To 8 .Cell(11, i + 4).Range = VBA.Round(IIf(Rnd > 0.5, Rnd * Rnd + 0.5, -(Rnd * Rnd + 0.5)), 1) .Cell(12, i + 4).Range = VBA.Round((2 * Rnd + 2) * 0.01, 2) .Cell(15, i + 4).Range = VBA.Round((2 * Rnd + 1) * 0.1 + 5, 1) .Cell(16, i + 4).Range = VBA.Round((2 * Rnd + 1) * 0.1 + 10, 1) .Cell(17, i + 4).Range = VBA.Round(2 * Rnd * 0.1 + 3, 1) .Cell(18, i + 4).Range = VBA.Round((2 * Rnd + 6) * 0.1 + 3, 1) Next End With End Sub '----------------------

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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