Excel宏替换多个Excel文件中的字符串

Excel宏替换多个Excel文件中的字符串,excel,vba,Excel,Vba,我试图创建一个VB宏来替换目录中多个excel文件中的字符串。我的代码如下,但它不工作,我不知道我需要做什么来修复它 有什么建议吗 Sub ReplaceStringInExcelFiles() Dim MyFile As String Dim FilePath As String Dim orig As String Dim news As String orig = "cow" news = "dog" FilePath = "C:\myDir\" MyFile = Dir(FileP

我试图创建一个VB宏来替换目录中多个excel文件中的字符串。我的代码如下,但它不工作,我不知道我需要做什么来修复它

有什么建议吗

Sub ReplaceStringInExcelFiles()

Dim MyFile As String
Dim FilePath As String
Dim orig As String
Dim news As String

orig = "cow"
news = "dog"

FilePath = "C:\myDir\"
MyFile = Dir(FilePath)


Do While Len(MyFile) > 0

Workbooks.Open (FilePath & MyFile)
For q = 1 To Application.Worksheets.Count
Worksheets(q).Activate
Sheets("Sheet1").Cells.Replace what:=Original_String, Replacement:=New_Replacement_String, lookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
    SearchFormat:=False, ReplaceFormat:=False
Next q
ActiveWorkbook.Save
ActiveWorkbook.Close
MyFile = Dir
Loop


End Sub
试试这个:

Sub ReplaceStringInExcelFiles()

    Dim MyFile As String
    Dim FilePath As String
    Dim orig As String
    Dim news As String
    Dim wb As Workbook, ws As Worksheet

    orig = "cow"
    news = "dog"

    FilePath = "C:\myDir\"
    MyFile = Dir(FilePath & "*.xls*")


    Do While Len(MyFile) > 0
        Set wb = Workbooks.Open(FilePath & MyFile) '<< assign the workbook to wb
        'Loop over the worksheets
        'Note: no need to activate/select
        For Each ws In wb.Worksheets
            ws.UsedRange.Cells.Replace what:=orig, _
                            Replacement:=news, _
                            lookAt:=xlPart, SearchOrder:=xlByRows, _
                            MatchCase:=False
        Next ws
        ActiveWorkbook.Close savechanges:=True
        MyFile = Dir
    Loop

End Sub
子替换字符串文件()
将MyFile设置为字符串
将文件路径设置为字符串
朦胧如弦
模糊的新闻
将wb设置为工作簿,ws设置为工作表
orig=“奶牛”
新闻=“狗”
FilePath=“C:\myDir\”
MyFile=Dir(文件路径&“*.xls*”)
当Len(MyFile)>0时执行
设置wb=Workbooks.Open(FilePath&MyFile)尝试以下操作:

Sub ReplaceStringInExcelFiles()

    Dim MyFile As String
    Dim FilePath As String
    Dim orig As String
    Dim news As String
    Dim wb As Workbook, ws As Worksheet

    orig = "cow"
    news = "dog"

    FilePath = "C:\myDir\"
    MyFile = Dir(FilePath & "*.xls*")


    Do While Len(MyFile) > 0
        Set wb = Workbooks.Open(FilePath & MyFile) '<< assign the workbook to wb
        'Loop over the worksheets
        'Note: no need to activate/select
        For Each ws In wb.Worksheets
            ws.UsedRange.Cells.Replace what:=orig, _
                            Replacement:=news, _
                            lookAt:=xlPart, SearchOrder:=xlByRows, _
                            MatchCase:=False
        Next ws
        ActiveWorkbook.Close savechanges:=True
        MyFile = Dir
    Loop

End Sub
子替换字符串文件()
将MyFile设置为字符串
将文件路径设置为字符串
朦胧如弦
模糊的新闻
将wb设置为工作簿,ws设置为工作表
orig=“奶牛”
新闻=“狗”
FilePath=“C:\myDir\”
MyFile=Dir(文件路径&“*.xls*”)
当Len(MyFile)>0时执行

Set wb=Workbooks.Open(FilePath&MyFile)Excel需要清晰的引用。始终确保所有对象都有一个作为根的应用程序对象的路径

这也是一个好习惯

 option explicit
这有助于发现这些潜在的bug


Tim的代码看起来不错,应该可以工作。

Excel需要清晰的参考。始终确保所有对象都有一个作为根的应用程序对象的路径

这也是一个好习惯

 option explicit
这有助于发现这些潜在的bug


Tim的代码看起来很好,应该可以运行。

运行代码时,“不工作”并不是一个有用的描述。代码不运行。出现了什么错误,突出显示了哪一行?我尝试从Excel运行它时没有错误。但是没有一个文件打开并用字符串更新。没有执行开始我是VB新手。我花了几个小时来创建代码,我不确定它是否正确。这就是我在网站上发布的原因“not working”(不工作)不是对运行代码时发生的情况的有用描述。代码不运行出现了什么错误以及哪一行突出显示?当我尝试从Excel运行它时没有错误。但是没有一个文件打开并用字符串更新。没有执行开始我是VB新手。我花了几个小时来创建代码,我不确定它是否正确。这就是我在网站上发帖的原因。请不要将评论作为答案。我知道。这是罪过,但我也是新来的,还没有发现如何在评论栏中使用CRLF这样简单的东西。到目前为止,这些帮助并不是很有帮助(或者我过度阅读了解决方案)。任何暗示都是非常受欢迎的…据我所知,你不能在评论中添加换行符。如果你需要在注释中添加代码,你可以在注释周围加上反勾,比如
Option Explicit
请不要将注释作为答案发布。我知道。这是罪过,但我也是新来的,还没有发现如何在评论栏中使用CRLF这样简单的东西。到目前为止,这些帮助并不是很有帮助(或者我过度阅读了解决方案)。任何暗示都是非常受欢迎的…据我所知,你不能在评论中添加换行符。如果需要将代码放在注释中,可以在注释周围加上反勾号,如
Option Explicit