我写了一个宏来查找单词“active”而不是“activ”,但我文件夹中的某些文件名可能包含单词“activ”。我想编写一个宏来搜索这些并将它们重命名为“active”,以便我的其余部分工作。我知道点点滴滴,但似乎无法把一个体面的代码放在一起。
If FileName = "*activ*" then
'also the file name is not just "activ" it maybe "activcn".
'am i doing this right by putting the **?
FileName = replace(FileName, "activ", "active")
Else
End if
我需要设置一个循环,以便它遍历文件列表并搜索所有文件名。
实际上我找到了一个解决方案:
Dim strFile As String
Dim newPath As String
newPath = "S:\test\"
strFile = Dir(newPath & "*.*")
If strFile = "*activ*" Then
Do While Len(strFile) > 0
If InStr(strFile, "activ") > 0 Then
Name strFolder & strFile As strFolder & replace(strFile, "activ", "active")
End If
strFile = Dir()
Loop
Else
End If
需要帮助:
If strFile = "*activ*" Then
正如我之前所说,文件名包含的不只是“激活”,例如“activcn”。
答案 0 :(得分:0)
在我看来,你的例子中的逻辑和变量名称有点混乱......这就是我认为你的意思:
Dim strFile As String
Dim strFolder As String
strFolder = "S:\test\"
strFile = Dir(newPath & "*activ*.*") ' no need to look at all files using *.*
Do While Len(strFile) > 0
If Not strFile Like "*active*" Then 'else "active" gets replaced by "activee"
Name strFolder & strFile _
As strFolder & Replace(strFile, "activ", "active")
End If
strFile = Dir()
Loop