ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 踏歌123

[求助] 批量清除文件夹下excel文件的公式,但保留数值的VBN宏代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-12-3 21:15 | 显示全部楼层
踏歌123 发表于 2016-12-3 18:29
大神,代码写好了没啊,快要派上用场了

Dim arrf(), mf&
Sub lsc()
    Dim Fso As Object, i&, sFileType$, na As Name
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set Fso = CreateObject("Scripting.FileSystemObject")
    sFileType = "*.xls"
    Call GetFiles(ThisWorkbook.Path, sFileType, Fso)
    For j = 1 To mf
        With Workbooks.Open(arrf(j))
            For Each sh In Worksheets
                sh.UsedRange.Value = sh.UsedRange.Value
            Next
            .Close True  '保存关闭
        End With
    Next
    mf = 0
    Erase arrf
    Set Fso = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "ok"
End Sub
Private Sub GetFiles(ByVal sPath$, ByVal sFileType$, Fso As Object)
    Dim Folder As Object
    Dim SubFolder As Object
    Dim File As Object
    Set Folder = Fso.GetFolder(sPath)
   
    For Each File In Folder.Files
        If File.Name Like sFileType Then
            If File.Name <> ThisWorkbook.Name Then
                mf = mf + 1
                ReDim Preserve arrf(1 To mf)
                arrf(mf) = sPath & "\" & File.Name
            End If
        End If
    Next
    If Folder.SubFolders.Count > 0 Then
        For Each SubFolder In Folder.SubFolders
            Call GetFiles(SubFolder.Path, sFileType, Fso)
        Next
    End If
    Set Folder = Nothing
    Set File = Nothing
    Set SubFolder = Nothing
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-12-3 21:18 | 显示全部楼层
参考附件>>>>>>>>>>>

测试.rar

875.65 KB, 下载次数: 432

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-3 21:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 踏歌123 于 2016-12-3 21:31 编辑
lsc900707 发表于 2016-12-3 21:15
Dim arrf(), mf&
Sub lsc()
    Dim Fso As Object, i&, sFileType$, na As Name

非常感谢大神帮忙
PS:大神这个代码是批量删除当前文件夹下的公式,及遍历子文件夹下所有excel文件(各位拿去用的请注意了)

TA的精华主题

TA的得分主题

发表于 2016-12-3 21:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
踏歌123 发表于 2016-12-3 21:26
非常感谢大神帮忙
PS:大神这个代码是批量删除当前文件夹下的公式,不能遍历子文件夹下excel文件(各位拿 ...

没错,你补充的对>>>>>>>>>

TA的精华主题

TA的得分主题

发表于 2016-12-3 21:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
踏歌123 发表于 2016-12-3 21:03
大神,运行时错误"1004",给你一个文件夹内文件形式的压缩包,你看该怎么改,帮帮忙哦,我对宏完全不通

因为你的文件夹名称含有空格,改一下代码

方法1
filesPath = thisworkbook.path & "\filesPath.txt"
改成
filesPath = "d:\filesPath.txt"

或者
方法2
a = Shell("cmd /c cd " & ThisWorkbook.Path & " & dir /s /b *.xls* >" & filesPath, 0)
改成
a = Shell("cmd /c cd " & ThisWorkbook.Path & " & dir /s /b *.xls* >" & """" & filesPath & """", 0)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-3 21:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dqhtju 发表于 2016-12-3 21:30
因为你的文件夹名称含有空格,改一下代码

方法1

按方法一改后,运行清除有公式和引用的表时,未出错,
运行第二遍和无公式的表时,提示"-786430(fff40000)自动化(Automation)错误

方法二修改后暂无错误


再次谢谢大神的dqhtju的帮忙

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-3 22:00 | 显示全部楼层
lsc900707 发表于 2016-12-3 21:28
没错,你补充的对>>>>>>>>>

lsc900707 大神,不好意思,刚才没看你附件以为还是你昨天说的,只是写一个批量删当前文件夹内的excel文件的宏,结果看了你附件后,发现还是能遍历当前宏文件坐在文件夹及下子文件夹内excel文件,并清除公式

但是有个小问题:表格内的自定义格式被改变了(时间那一栏,开始我自定义设置的只显示"年/月/日",执行宏文件后,格式变成了"年/月/日 AM/PM",但显示的又是"年/月/日  星期几")

TA的精华主题

TA的得分主题

发表于 2016-12-3 22:29 | 显示全部楼层
踏歌123 发表于 2016-12-3 22:00
lsc900707 大神,不好意思,刚才没看你附件以为还是你昨天说的,只是写一个批量删当前文件夹内的excel文 ...

这个可能当公式去掉了,要重新设置单元格日期格式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-3 22:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lsc900707 发表于 2016-12-3 22:29
这个可能当公式去掉了,要重新设置单元格日期格式。

好的,非常感谢啊

TA的精华主题

TA的得分主题

发表于 2016-12-3 22:41 | 显示全部楼层
踏歌123 发表于 2016-12-3 22:37
好的,非常感谢啊

一个文件夹只要运行一次就可以吧?我自己没有去认真测试过。希望有问题及时反馈。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 17:23 , Processed in 0.052227 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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