当前位置: 首页 > news >正文

批量处理多个excel文件去公式的方法

本方法适用于:

使用VBA对多个excel文件中的全部Sheet表进行批量去公式并自动保存操作。 

步骤:

① 把需要去公式的多个EXCEL文件放在一个文件夹下

② 打开其中一个EXCEL文件,在VB编辑器中插入模块并粘贴下面的VBA代码

③ 把标红的值修改为实际文件夹路径(注意以 \ 结尾)

④ 运行,等待结束提示窗出现

 

注意事项!:

去公式操作不可逆,建议使用新建的备份来操作,避免丢失含公式文件

当需要人工停止运行的时候按Esc即可中断

  

VBA代码:

Sub RemoveAllFormulas()Dim folderPath As StringDim fileName As StringDim wb As WorkbookDim ws As WorksheetDim counter As LongDim errorCounter As LongDim fileList As New CollectionDim i As Long' 设置文件夹路径 - 请修改为您的实际路径folderPath = "F:\Your\Folder\Path\"If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"' 检查文件夹If Dir(folderPath, vbDirectory) = "" ThenMsgBox "文件夹不存在:" & folderPath, vbCriticalExit SubEnd If' 初始化计数器counter = 0errorCounter = 0' 第一步:收集所有文件名,避免无限循环问题fileName = Dir(folderPath & "*.xls*")If fileName = "" ThenMsgBox "没有找到Excel文件", vbInformationExit SubEnd If' 将文件名收集到集合中Do While fileName <> ""fileList.Add fileNamefileName = DirLoop' 关闭所有提示Application.ScreenUpdating = FalseApplication.DisplayAlerts = False' 第二步:处理每个文件For i = 1 To fileList.CountDim fullPath As StringDim currentFileName As StringcurrentFileName = fileList(i)fullPath = folderPath & currentFileNameDim isAlreadyOpen As BooleanisAlreadyOpen = False' 首先检查文件是否已经打开For Each wb In Application.WorkbooksIf wb.Name = currentFileName ThenisAlreadyOpen = TrueExit ForEnd IfNext wb' 重置wb变量Set wb = NothingIf isAlreadyOpen Then' 文件已打开,直接使用Set wb = Workbooks(currentFileName)Else' 文件未打开,尝试打开On Error Resume NextSet wb = Workbooks.Open(fullPath)If Err.Number <> 0 Then' 打开失败errorCounter = errorCounter + 1On Error GoTo 0Set wb = NothingGoTo NextFileEnd IfOn Error GoTo 0End If' 如果wb不为空,处理工作簿If Not wb Is Nothing Then' 处理工作簿中的所有工作表On Error Resume NextFor Each ws In wb.Worksheets' 使用更可靠的方法检查是否有数据Dim lastRow As Long, lastCol As LongDim dataRange As Range' 重置变量Set dataRange = NothinglastRow = 0lastCol = 0' 使用Find方法查找最后一行和最后一列On Error Resume NextlastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).RowlastCol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).ColumnOn Error GoTo 0If lastRow > 0 And lastCol > 0 Then' 有数据,处理这些数据Set dataRange = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))' 将公式转换为值dataRange.Value = dataRange.ValueElse' 尝试使用UsedRange作为备选方案If Not ws.UsedRange Is Nothing ThenIf ws.UsedRange.Cells.Count > 1 Thenws.UsedRange.Value = ws.UsedRange.ValueEnd IfEnd IfEnd IfNext wsOn Error GoTo 0' 保存文件If isAlreadyOpen Thenwb.SaveElsewb.Close SaveChanges:=TrueEnd Ifcounter = counter + 1Else' 文件无法处理errorCounter = errorCounter + 1End IfNextFile:' 清理Set ws = NothingSet dataRange = NothingSet wb = NothingNext i' 恢复Excel设置Application.ScreenUpdating = TrueApplication.DisplayAlerts = True' 显示结果MsgBox "处理完成!" & vbCrLf & _"处理了 " & counter & " 个文件" & vbCrLf & _"失败 " & errorCounter & " 个文件", vbInformation
End Sub

 

成功运行完成的效果:

 

 

http://www.jsqmd.com/news/66036/

相关文章:

  • 在河北省邢台市沙河市老家农村盖房子,靠谱的自建房公司口碑推荐。河北省邢台市沙河市自建房公司/机构权威测评推荐排行榜
  • 想在饶阳县老家农村盖房子,靠谱的自建房公司口碑推荐。河北衡水饶阳自建房公司/机构权威测评推荐排行榜。
  • 腾讯云EdgeOne Pages托管Blazor Wasm
  • 2025年质量好的苏州喷砂机TOP实力厂家推荐榜
  • TLS1.3协议分析(3)
  • 饶阳县农村自建房找谁好?河北衡水饶阳自建房公司/机构深度评测口碑推荐榜
  • 2026年河北衡水饶阳农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活
  • 2025年比较好的拉拔润滑剂厂家最新TOP排行榜
  • Solon AI 开发学习18 - generate - 生成示例参考
  • 2026 年河北沧州吴桥县农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活
  • 2025年评价高的十大品牌挤塑板厂家选购指南与推荐
  • 纳秒绿光vs红外皮秒,哪款激光器更适合玻璃切割打孔?-外协加工-委外加工-专注于河南郑州激光微纳代加工-激光切割雕刻打孔打标镭雕焊接划线表面处理-芯晨微纳(河南)光电科技有限公司
  • 吴桥县农村自建房找谁好?河北沧州吴桥县自建房公司 / 机构深度评测口碑推荐榜
  • 20225.10.2
  • 025.10.3
  • 2025年比较好的钢铁冲压皮膜剂/皮膜剂厂家推荐及选择指南
  • 十大经典排序算法
  • 2025年靠谱的智能电动蛇形帘厂家推荐及选购榜
  • 面试官问MyBatis/OpenFeign的原理?我手搓了个MyHttp怼回去!(反八股版)
  • 11/5
  • 2025年口碑好的铁路施工智慧工地专家推荐榜
  • 2025年质量好的液压五金铰链/3D五金铰链厂家最新TOP实力排行
  • 2025年长沙除甲醛公司权威推荐榜单:空气治理/甲醛治理/新房测甲醛服务商精选
  • 2025年比较好的托辊/定制托辊厂家最新实力排行
  • 2025年耐用的抛丸机厂家最新TOP实力排行
  • 2025年评价高的陶瓷内胆保温杯热门厂家推荐榜单
  • HTML CSS八股 - 教程
  • 2025年比较好的煎炒不粘锅最新TOP厂家排名
  • 《程序员修炼之道:从小工到专家》--注重实效的编程哲学——从小工到专家的转变
  • 《程序员修炼之道:从小工到专家》--从“小工”到“专家”——初识程序员修炼之道