用于查找和替换文本文件中的文本的宏(不同文件的循环)

时间:2017-09-01 02:08:20

标签: excel vba excel-vba

VBA新手,但试图为以下内容制作一个宏:

  • 我希望宏打开一个文本文件(单元格A2中提供的位置) 使用单元格B2中的文件名,找到文本(在单元格C2中提供), 用单元格D2中提供的新文本替换文本,然后保存并关闭文本文件。
  • 然后,它应该打开一个文本文件(单元格A3中提供的位置 单元格B3中的文件名,找到文本(在单元格C3中提供),用单元格D3中提供的新文本替换文本,然后保存并关闭文本文件。
  • 重复,直到电子表格中提供的所有文件都已存在 更新。

谢谢你的帮助!

电子表格示例: spreadsheet

请注意,我希望能够找到并替换不必与原始文本具有相同字符数的文字。

到目前为止的尝试如下。运行调试时,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

0 个答案:

没有答案