【问题标题】:Find and replace string in all excel files in folder查找和替换文件夹中所有excel文件中的字符串
【发布时间】:2015-03-26 21:06:25
【问题描述】:

我需要帮助来创建查找和替换字符串宏,以便它可以在文件夹中的所有文件中查找和替换字符串。

例如 fofler = "C:\ifolder\" 文件列表 = "*.xlsx"

到目前为止,我只能对一个文件执行此操作,我需要对文件夹中的所有文件执行此操作

Sub ReplaceStringInFile()

Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String

' Edit as needed
sFileName = "C:\macro\test.txt"

iFileNum = FreeFile
Open sFileName For Input As iFileNum

Do Until EOF(iFileNum)
    Line Input #iFileNum, sBuf
    sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum

sTemp = Replace(sTemp, "THIS", "THAT")

iFileNum = FreeFile
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum

End Sub

【问题讨论】:

  • 请展示你尝试了什么以及你卡在哪里
  • 同样的麻烦让我在 4 个月前从完全零级开始学习 VBA)))
  • 您可以通过提供更多细节来帮助获得答案 - 您究竟遇到了什么问题?你知道任何VBA吗?您是否需要知道如何循环浏览文件夹中的文件?打开工作簿?

标签: excel vba


【解决方案1】:

因为您实际上有打开文本文件的代码 - 而不是 Excel 文件 - 我采用了相同的方法

类似这样的地方

  1. Dir 用于循环遍历特定文件夹中的所有 文件。
  2. 使用 FileScriptingObject 一次读取所有文本,进行替换,然后用更新的文本覆盖文件文件。

代码

Sub  ReplaceStringInFile()

Dim objFSO As Object
Dim objFil As Object
Dim objFil2 As Object
Dim StrFileName As String
Dim StrFolder As String
Dim SstrAll As String

Set objFSO = CreateObject("scripting.filesystemobject")
StrFolder = "c:\macro\"
StrFileName = Dir(StrFolder & "*.txt")

Do While StrFileName <> vbNullString
    Set objFil = objFSO.opentextfile(StrFolder & StrFileName)
    strAll = objFil.readall
    objFil.Close
    Set objFil2 = objFSO.createtextfile(StrFolder & StrFileName)
    objFil2.Write Replace(strAll, "THIS", "THAT")
    objFil2.Close
    StrFileName = Dir
Loop
End Sub

【讨论】:

  • 非常感谢您的代码。因为,我是 VBA 的新手,你能帮我把这段代码粘贴到哪里并运行吗?我通过粘贴在 VBAProject->ThisWorkBook 中进行了尝试。它在运行时没有显示任何错误,但同时它没有替换,即不工作。你能帮忙吗?
  • @guaravkumar 将其放在常规代码模块中。确保您的路径名已更新(从 C;\macro\ 上面)。
  • 非常感谢您的帮助。我正在为excel文件做这件事。我认为这是错误的原因:输入文件末尾(错误 62)。你能帮我写程序中使用的 opentextfile 和 createtextfile 的替代品吗?非常感谢期待:)
  • @gauravkumar 建议你提出一个新问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2021-02-24
相关资源
最近更新 更多