设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4136|回复: 5
打印 上一主题 下一主题

为什么用find替换如此的慢?

[复制链接]
跳转到指定楼层
1#
发表于 2015-3-24 22:53:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位大侠:
有问题想请教,
我用下面两种代码做批量替换
第一种如下,它能保持格式的替换,但速度相当慢,而且替换时鼠标在不停的闪烁
target_doc.Content.Find.Execute findtext:=targetcontent, Replacewith:=replacecontent, Replace:=wdReplaceAll
第二种如下,它能1秒左右替换完毕,但是文档里面的格式、表格、粘贴图片都没了
tbstring = target_doc.Content
tbstring = Replace(tbstring, targetcontent, replacecontent)
为什么有这样的区别?

我用第一种方法,做了以下逐条尝试
With target_doc
        .Visible = True
        .ActiveWindow.View.Type = wdNormalView
        .ScreenUpdating = False
        .Options.CheckSpellingAsYouType = False
        '.DisplayStatusBar = False  由于词句在2010版已无效,就没用
End With
但是都不能提速,所以想问要怎么做才能提速呢?
谢谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
6#
发表于 2018-4-30 14:49:49 | 只看该作者
wrap :=wdfindcontinue和wdfindstop 不一样,前者要占大量资源,
5#
发表于 2016-1-5 14:19:46 | 只看该作者
据我个人观察,用find并replaceall时系统会把大量资源用于保存备份文件。有时一分钟可能会保存近10次。然而如果只用find和tyeptext,速度就会快多了。虽然没有replace快,但也很不错。只是要明确一点,不能有跨行合并的表格单元格。否则可能会出现死循环。

点击这里给我发消息

4#
发表于 2015-3-25 22:24:58 | 只看该作者
试试用API
lockwindowupdate
不知道行不行
3#
 楼主| 发表于 2015-3-25 20:19:41 | 只看该作者
tmtony 发表于 2015-3-25 17:58
find是有些慢的。
如果不处理其它,只有文字用replace会快不少

可以文件很少只有文字的嘛,
我最不理解的是,正如我上面所写的,我把find套进循环进行批量替换的时候,为什么鼠标会闪个不停呢?
究竟是在刷新什么呢?
能不能关闭这种更新呢?
谢谢指点!!!

点击这里给我发消息

2#
发表于 2015-3-25 17:58:06 | 只看该作者
find是有些慢的。
如果不处理其它,只有文字用replace会快不少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-2 04:14 , Processed in 0.129493 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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