Vba 宏以查找和替换文本文件中的文本(不同文件的循环)
VBA新手,但正在尝试为以下内容创建宏:Vba 宏以查找和替换文本文件中的文本(不同文件的循环),vba,excel,Vba,Excel,VBA新手,但正在尝试为以下内容创建宏: 我希望宏打开一个文本文件(单元格A2中提供的位置) 文件名位于单元格B2),以查找文本(在单元格C2中提供), 用单元格D2中提供的新文本替换文本,然后保存并关闭文本文件 然后,它应该打开一个文本文件(在单元格A3中提供的位置) 单元格B3中的文件名),要查找文本(在单元格C3中提供),请将文本替换为单元格D3中提供的新文本,然后保存并关闭文本文件 重复此操作,直到电子表格中提供的所有文件都已完成 更新 谢谢你的帮助 电子表格示例: 请注意,我希望
- 我希望宏打开一个文本文件(单元格A2中提供的位置) 文件名位于单元格B2),以查找文本(在单元格C2中提供), 用单元格D2中提供的新文本替换文本,然后保存并关闭文本文件
- 然后,它应该打开一个文本文件(在单元格A3中提供的位置) 单元格B3中的文件名),要查找文本(在单元格C3中提供),请将文本替换为单元格D3中提供的新文本,然后保存并关闭文本文件
- 重复此操作,直到电子表格中提供的所有文件都已完成 更新
strText
悬停在上方时是正确的,然后当它通过Get#i,strText
步骤时,它将变为我尝试更新的文本文件的标题
Sub Replace_Text()
Dim src As String, fl As String
Dim strFile As String
Dim i As Integer
Dim x As Integer
Dim strText As String
Dim lngMyRow As Long
Dim lngLastRow As Long
i = FreeFile
Application.ScreenUpdating = False
lngLastRow = Range("A:B").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
For lngLastRow = 2 To lngLastRow
x = 2
'Source directory
src = Range("A" & x)
'File name
strFile = Range("B" & x)
With CreateObject("vbscript.regexp")
.Global = True
Open src & "\" & strFile For Binary Access Read Write As #i
strText = Space(LOF(i))
Get #i, , strText
For Each cell In Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row)
.Pattern = Replace(Replace(Replace(Replace(cell.Value, "?", "\?"), "*", "\*"), "+", "\+"), ".", "\.")
strText = .Replace(strText, cell.Offset(, 1).Value)
Next cell
Put #i, , strText
Close #i
End With
i = i + 1
Next lngLastRow
MsgBox "done"
Application.ScreenUpdating = True
End Sub
对不起,我应该在答案中添加我的编辑吗?我是VBA的新手(今天以前从未使用过),也是论坛的新手,所以我只是刚刚起步。我尝试了
strText=Space(LOF(I))
,但它只给出了文本文件的头。FWIW-对于lngLastRow=2到lngLastRow
应该是对于x=2到lngLastRow
同样下一个lngLastRow
应该是下一个x
,并且x=2
语句应该被删除。strText
上的悬停文本将仅显示变量中包含的数据,直到第一个CR/LF,因此将仅显示标题。而且i=i+1
可能是多余的-您应该能够对所有文件重复使用相同的文件号。在这些更改之后,您的代码应该(据我所知)可以正常工作。很抱歉,这些更改不起作用。当尝试运行时,它会出现一个文件路径错误。很高兴再次从头开始,就像我说的,VBA新手,刚从我找到的其他宏中提取了行。你没有提到保存文件。我更新了问题,包括保存文件。谢谢。对不起,我应该在答案中添加我的编辑吗?我是VBA的新手(今天以前从未使用过),也是论坛的新手,所以我只是刚刚起步。我尝试了strText=Space(LOF(I))
,但它只给出了文本文件的头。FWIW-对于lngLastRow=2到lngLastRow
应该是对于x=2到lngLastRow
同样下一个lngLastRow
应该是下一个x
,并且x=2
语句应该被删除。strText
上的悬停文本将仅显示变量中包含的数据,直到第一个CR/LF,因此将仅显示标题。而且i=i+1
可能是多余的-您应该能够对所有文件重复使用相同的文件号。在这些更改之后,您的代码应该(据我所知)可以正常工作。很抱歉,这些更改不起作用。当尝试运行时,它会出现一个文件路径错误。很高兴再次从头开始,就像我说的,VBA新手,刚从我找到的其他宏中提取了行。你没有提到保存文件。我更新了问题,包括保存文件。谢谢