ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba打开文件之后怎么释放内存?守柔等大侠请帮忙

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-27 09:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 liuhoubin168 于 2015-1-27 09:28 编辑
守柔 发表于 2015-1-23 10:06
To loquat兄:
你所指的占用内存情况,是如何获得的?
理论上说,每次打开一个Word文档时(后),肯定是要消耗 ...

赞同守柔老师的观点,打开时使用set document=documents.open(),关闭时让document=nothing。以前我统计一个目录下所有文档页数时,一次循环就是上千个文件,也不会占用很多内存。

再有就是word高版本也有不如低版本的情况存在。比如,我在调试com加载项时,发现在word2010中如果使用定时判断功能(间隔1秒),可能会让word的内存占用高达150兆,如果去掉定时判断内存回复到几十兆的正常状态。
而在word2003中却不会有这个现象。

下图为:在word2007中使用定时判断(间隔1秒)当前位置字体和段落首行缩进,这个功能在word2010中因太占内存只有关闭。
20150127090518.png

还有一个word2010在XP系统中使用documents遍历打开文档时,绝对存在的问题(word2003不存在此问题)。详见:
http://club.excelhome.net/thread-1053624-1-1.html

但软件officeTab的却没有出现这个问题,不知这个软件的开发者用的什么方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-27 11:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liuhoubin168 发表于 2015-1-27 09:25
赞同守柔老师的观点,打开时使用set document=documents.open(),关闭时让document=nothing。以前我统计一 ...

文档中域代码较多时,set nothing好像不能释放内存,或者可能是不能立即释放内存
是用API将内存压缩到磁盘之后,不会提高效率,但是可以节省内存资源,代码起码可以执行得更长。

题外:获取word文件的页码可以参考这个函数,虽然不一定精准,但可以作为参考。
http://club.excelhome.net/thread-1043977-1-1.html

TA的精华主题

TA的得分主题

发表于 2021-8-27 09:49 | 显示全部楼层
loquat 发表于 2015-1-23 13:59
>1. 老大,我是在系统进程管理器中发现没有释放内存的。VBE中在红字部分都设定了断点。
>2. 我试过了, ...

set doc=Nothing  这个方法是可以释放内存的。不知道你是怎么实验的
我依次打开关闭了600多个doc文档,word内存占用仍然是54M。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-6 14:08 , Processed in 0.019128 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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