【问题标题】:Excel VBA - Find and Replace from External FileExcel VBA - 从外部文件中查找和替换
【发布时间】:2014-09-16 14:12:35
【问题描述】:

我有一个文件,我想使用另一个 Excel 文件中的数据运行查找和替换。

到目前为止,我做错了什么?

Sub LegalName()
    Dim NameListWB As Workbook
    Dim NameListWS As Worksheet
    Set NameListWB = Workbooks.Open("File.xlsx")
    Set NameListWS = NameListWB.Worksheets("Sheet1")
    Dim rng As Range

    Set rng = NameListWS.Range("A:B").Select
     Do Until IsEmpty(ActiveCell)
             Worksheets("Sheet1").Columns("F").Replace _
            What:=ActiveCell.Value, Replacement:=ActiveCell.Offset(0, 1).Value, _
            SearchOrder:=xlByColumns, MatchCase:=False
         ActiveCell.Offset(1, 0).Select
     Loop
End Sub

【问题讨论】:

  • 发布的代码示例有什么问题?它会抛出错误吗?如果是在哪一行?
  • 您好像在交换列?你能解释一下当你运行它时它在做什么,或者你得到一个错误?
  • 你在哪里替换,从哪里替换?
  • 我正在搜索 F 列以查看它是否有任何与 File.xlsx A 列中的任何内容匹配的单词,如果匹配,我想用 File.xlsx 的 B 列中的内容替换这些单词。

标签: vba excel excel-2010


【解决方案1】:

我看到你从声明你的对象开始但错过了一些。另外,你需要避免使用.SelectInteresting Read

这是你正在尝试的(UNTESTED)吗?

Sub Sample()
    Dim NameListWB As Workbook, thisWb As Workbook
    Dim NameListWS As Worksheet, thisWs As Worksheet
    Dim i As Long, lRow As Long

    '~~> This is the workbook from where your code is running
    Set thisWb = ThisWorkbook
    '~~> Change this to the sheet name where you want to replace
    '~~> in Column F
    Set thisWs = thisWb.Sheets("Sheet1")

    '~~> File.xlsx
    Set NameListWB = Workbooks.Open("C:\File.xlsx")
    Set NameListWS = NameListWB.Worksheets("Sheet1")

    With NameListWS
        '~~> Find last row in Col A of File.xlsx
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        '~~> Loop though Col A
        For i = 1 To lRow
            '~~> Do the replace
            thisWs.Columns(6).Replace What:=.Range("A" & i).Value, _
                                      Replacement:=.Range("B" & i).Value, _
                                      SearchOrder:=xlByColumns, _
                                      MatchCase:=False
        Next i
    End With
End Sub

【讨论】:

  • 是的!看来我在 VBA 中还有很多需要学习的地方,但这确实很好用!谢谢。
  • 我将它添加到 PERSONAL.XLSB 中,它给了我一个错误,因为我用那里的名称引用了工作表。我将 'Set thisWs = thisWb.Sheets("Sheet1")' 替换为 'Set thisWs = thisWb.Sheets(1)' 以及下面的参考。它不再给我一个错误,但它不起作用。
猜你喜欢
  • 2018-01-18
  • 2013-07-15
  • 2014-10-12
  • 1970-01-01
  • 2019-10-23
  • 2019-07-18
  • 1970-01-01
  • 2018-04-11
  • 2021-10-13
相关资源
最近更新 更多