Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 698|回复: 1

[已解决]求大神优化一下代码

[复制链接]
发表于 2022-5-6 17:02 | 显示全部楼层 |阅读模式
Sub 批量替换()
Dim arr, i&
arr = ActiveSheet.[a1].CurrentRegion
Application.ScreenUpdating = False
Dim wb As Excel.Workbook
f = Dir(ThisWorkbook.Path & "\*.xl*") '生成查找EXCEL的目录,可以适应不同版本
Do While f <> "" '在目录中循环
    If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)  '依次打开目录工作薄
        Sheets("报告").Select
        ActiveWorkbook.Save
        For i = 2 To UBound(arr)
            Cells.Replace What:=arr(i, 1), Replacement:=arr(i, 2), LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
        Next i
        wb.Close True
    End If
    f = Dir
Loop
Application.ScreenUpdating = True
End Sub


想让“报告”那个页出现在表格中

最佳答案
2022-5-7 12:54
Sub 批量替换()
    Dim arr, i&
    On Error Resume Next  ' 出错则执行下一句,可以跳过不存在的工作表
    arr = ActiveSheet.[a1].CurrentRegion
    Application.ScreenUpdating = False
    f = Dir(ThisWorkbook.Path & "\*.xl*")   
    Do While f <> ""  
        If f <> ThisWorkbook.Name Then  '如果不是本工作簿
            Workbooks.Open (ThisWorkbook.Path & "\" & f)  
            For i = 2 To UBound(arr)
                Sheets(arr(i, 3)).Cells.Replace What:=arr(i, 1), Replacement:=arr(i, 2), LookAt:=xlPart
            Next i
            ActiveWorkbook.Close True
        End If
        f = Dir
    Loop
    Application.ScreenUpdating = True
End Sub
微信图片_20220506165701.png

批量替换.zip

65.62 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-5-7 12:54 | 显示全部楼层    本楼为最佳答案   
Sub 批量替换()
    Dim arr, i&
    On Error Resume Next  ' 出错则执行下一句,可以跳过不存在的工作表
    arr = ActiveSheet.[a1].CurrentRegion
    Application.ScreenUpdating = False
    f = Dir(ThisWorkbook.Path & "\*.xl*")   
    Do While f <> ""  
        If f <> ThisWorkbook.Name Then  '如果不是本工作簿
            Workbooks.Open (ThisWorkbook.Path & "\" & f)  
            For i = 2 To UBound(arr)
                Sheets(arr(i, 3)).Cells.Replace What:=arr(i, 1), Replacement:=arr(i, 2), LookAt:=xlPart
            Next i
            ActiveWorkbook.Close True
        End If
        f = Dir
    Loop
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-9-21 21:11 , Processed in 0.558834 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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