ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何设定“宏”的作用域为整个文件夹&am

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-12-6 16:48 | 显示全部楼层 |阅读模式

我写了个批量替换的宏,想运行一次,整个文件夹里的Word文件的相关项全部被替换。

请问如何实现,或者只能写完整程序才能实现?

谢谢

TA的精华主题

TA的得分主题

发表于 2004-12-6 17:31 | 显示全部楼层

有几个方法,你可搜索一下论坛中相关贴子。

方法一:将该宏置于全局模板(NORMAL.DOT)中,每次打开文件(ATUO-OPEN)事件中,如

'* +++++++++++++++++++++++++++++++++++++++

'* Created By 守柔@ExcelHome 2004-12-06 17:25:53

'仅测试于System: Windows NT Word: 10.0 Language: 2052

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Private Sub Document_Open() MsgBox "请在此更换为你的宏名"'此处换成你的宏过程 End Sub '----------------------
则以后每打开一个指定文件,都会运行你的宏;

方法二:使用遍历文件夹的做法,运行指定的宏,也是将该宏置于上述一样的事件中,无非由手动变为自动打开.关于遍历文件夹,有三种方法 :一是用CREATEOBJECT的方法,一是用DIR的方法,一是用FileDialog的方法,你可搜索一下.

有问题再沟通.

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-7 12:36 | 显示全部楼层

尝试方法一,未成功。

我的宏代码:

Private Sub Document_Open() MsgBox "batch_replacement" End Sub

Sub batch_replacement() Selection.HomeKey Unit:=wdStory 'back to top - CLT+H Selection.Find.Execute Replace:=wdReplaceAll 'select all - CLT+A With Selection.Find .Text = "SCENARIO" .Replacement.Text = "场景" .Forward = True 'replace forward .Wrap = wdFindAsk '

.Format = False ' Format no change .MatchCase = False ' Settings .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With

End Sub

位置:Normal.dot 中 Project(Normal) > Microsoft Word Objects > ThisDocument

打开任意.doc文档,宏未自动执行。

请问怎么插入每次打开文件(ATUO-OPEN)事件

是否可以给我一个Normal.dot 我可以参考,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-7 12:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-12-7 12:57 | 显示全部楼层

Private Sub Document_Open() MsgBox "batch_replacement" End Sub

改为:

Private Sub Document_Open() batch_replacement End Sub

就可以了。

至于自动宏AUTOEXEC是每次自动加载WORD时才产生此事件

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-7 13:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-7 23:15 | 显示全部楼层
以下是引用守柔在2004-12-6 17:31:00的发言:

有几个方法,你可搜索一下论坛中相关贴子。

方法二:使用遍历文件夹的做法,运行指定的宏,也是将该宏置于上述一样的事件中,无非由手动变为自动打开.关于遍历文件夹,有三种方法 :一是用CREATEOBJECT的方法,一是用DIR的方法,一是用FileDialog的方法,你可搜索一下.

有问题再沟通.

好像找不到相关帖子,能否提示一下或给个链接。

我的意图就是在多个Doc文件都执行一遍上述宏,但最好不用一个一个打开,毕竟有90多个文件

TA的精华主题

TA的得分主题

发表于 2004-12-8 07:22 | 显示全部楼层
以下是引用jmfish在2004-12-7 23:15:00的发言:

好像找不到相关帖子,能否提示一下或给个链接。

我的意图就是在多个Doc文件都执行一遍上述宏,但最好不用一个一个打开,毕竟有90多个文件

我想,如果楼主不熟悉VBA的话,我来帮你完成就是了。看了楼主的宏,就知道入门不久吧!

所谓的一个一个打开,这是必需的,但不是通过手动用打它开,关键是楼主对于VBA不熟悉,尽管我指点了,可还是没有理解。

通常这种情况的完成思路是这样的,以全局代码为基础,每次打开一个文档由全局模板中的自动打开宏事件运行指定的“替换”的宏,那后保存该活动文档,再关闭。

用代码遍历一个指定的文件夹,一一打开,为加快运行速度,可以关闭屏幕更新。

详细方案除非楼主要求,我就不一一更改了,请楼主自己动动脑子,略作修改就可以了。

http://club.excelhome.net/viewthread.php?tid=69692&replyID=340493&skin=1

http://club.excelhome.net/viewthread.php?tid=69821&replyID=345171&skin=1

http://club.excelhome.net/viewthread.php?tid=73081&replyID=361949&skin=1

[此贴子已经被作者于2004-12-8 7:26:52编辑过]

TA的精华主题

TA的得分主题

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

版主真素聪慧,我没有学过VBA,那个宏也是别处找来滴。

感觉这个宏通俗易懂又好用。

Sub Example() Dim Adoc As String, SetPsDoc As Document On Error Resume Next ChDrive "D" ChDir "D:\TEST" Adoc = Dir("*.doc") Application.ScreenUpdating = False Do While Adoc <> "" ' MsgBox Adoc Set SetPsDoc = Documents.Open(Adoc)

Batch_Replacement

SetPsDoc.Save SetPsDoc.Close True Adoc = Dir() Loop Application.ScreenUpdating = True End Sub

但是运行没有遍历test文件夹中所有文件,只应用了一个文件,请帮忙再修正一下,谢谢

[此贴子已经被作者于2004-12-8 12:43:04编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-8 17:00 | 显示全部楼层
请版主抽空指点一下,谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 17:18 , Processed in 0.049192 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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