ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 不能删除“~$*.doc”文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-6 10:30 | 显示全部楼层 |阅读模式
问题一
以下代码,不能删除指定文件夹及其子文件夹内的“~$*.doc”文件,但去掉“~$”后却可删除:
Dim FileName,Fliepath as string
Filepath ="D:\2017年度\"
filename =dir(filepath & "~$*.doc")
while filename <>""
kill Filepath &filename
filename =dir
wend
问题二
参照守柔大神的代码,写了一段删除最后的空白段落的代码,但提示错误:
Sub DelBlank() Dim i As Paragraph, n As Long
Application.ScreenUpdating = False '关闭屏幕刷新
For Each i In ActiveDocument.Paragraphs.Last '在活动文档的最后段落循环
If Len(i.Range) = 1 Then '判断段落长段,此处可根据文档实际情况
i.Range.Delete '进行必要的修改可将任意长度段落删除
n = n + 1 '计数
End If
Next MsgBox "共删除空白段落" & n & "个!"
Application.ScreenUpdating = True '恢复屏幕刷新
End Sub
现向各位大神求助,帮助修改以上代码,谢谢

TA的精华主题

TA的得分主题

发表于 2017-3-7 13:46 | 显示全部楼层
问题一:
因为"~$*.doc"类文件是隐藏的系统文件,所在要在dir中加上参数6,即:Dir(FilePath & "~$*.doc", 6)。
另外,Kill不能删除隐藏文件,需要在其之前将文件属性设为常规,即:SetAttr FilePath & FileName, 0。

问题二:
可能是For Each 循环不适用吧,改为Do While循环:
Do While Len(ActiveDocument.Paragraphs.Last.Range) = 1
ActiveDocument.Paragraphs.Last.Range.Delete
n = n + 1
Loop

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-7 23:32 | 显示全部楼层
dafanshu1 发表于 2017-3-7 13:46
问题一:
因为"~$*.doc"类文件是隐藏的系统文件,所在要在dir中加上参数6,即:Dir(FilePath & "~$*.doc", ...

dafanshu1兄,谢谢您。修改成如下:
Dim FileName,Fliepath as string
Filepath ="D:\2017年度\"
filename =Dir(FilePath & "~$*.doc", 6)
SetAttr FilePath & FileName, 0
while filename <>""
kill Filepath &filename
filename =dir
wend
问题基本解决。就是有点小的瑕疵:其一,每次只能删除一个文件,文件夹内有多个“~$*.doc”文件时,提示找不到文件;其次,不能删除子文件夹内的“~$*.doc”文件。如果能在文件夹及其子文件夹内循环,删除多个文件就理想了

TA的精华主题

TA的得分主题

发表于 2017-3-8 09:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ke3088 发表于 2017-3-7 23:32
dafanshu1兄,谢谢您。修改成如下:
Dim FileName,Fliepath as string
Filepath ="D:\2017年度\"

你要将SetAttr语句放在while循环内才行的。
Dir函数好像是不能查找子文件夹的,至于如何遍历子文件夹,可以在论坛上找一下有关贴子。

TA的精华主题

TA的得分主题

发表于 2017-3-8 09:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
~$开头的有可能是目前正在打开的文档的临时文件

TA的精华主题

TA的得分主题

发表于 2017-3-8 10:41 | 显示全部楼层
loquat 发表于 2017-3-8 09:47
~$开头的有可能是目前正在打开的文档的临时文件

是喔,如果删除了可能对非正常关闭的文档恢复造成影响。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-8 15:40 | 显示全部楼层
谢谢提醒,不过我是在另存前清理文件夹用的,与当前文档不在同一文件夹内,估计问题不大,再次感谢!

TA的精华主题

TA的得分主题

发表于 2017-3-12 12:35 | 显示全部楼层
楼主,前两天我整理单位WORD文档,也是为WIN7下即使打开搜索隐藏文件仍然看不到WORD的临时文件而发愁,后来上网上搜得一个小软件:隐藏文件查找器,它是外国人做的免费软件,因为是免费,所以,不能批量执行删除,但可以为找到的隐藏文件取消隐藏,然后再在资源管理器中搜索 ~$*.doc 即可批量删除了,此前要关闭WORD程序。
Hidden File Finder v3.0.rar (1.19 MB, 下载次数: 5)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 07:41 , Processed in 0.024180 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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