Excel 2007 中目录中文件中的 VBA 字符串搜索不起作用

Excel 2007 中目录中文件中的 VBA 字符串搜索不起作用

我正在尝试在包含多个文件的文件夹中查找字符串。找到字符串后,它应该选择并复制右侧 5 列相邻单元格中的值(Offset(0,5)),然后将其粘贴到我的工作簿中。如果找到更多字符串,则应将它们粘贴为列表 End(xlDown)。

这是个主意,但我无法让它发挥作用,错误信息:“下标超出范围“。

Sub searchBOM()

Dim BOM As String 'the text i'm gonna look for
Dim path As String 'the folder containing several files
Dim filename As String 'one of the files to search in

path = "D:\folder\"
filename = Dir(path)
BOM = InputBox("please enter bom code") 'where the user enters the string

If BOM = "" Then
        MsgBox ("please input valid BOM code") 'not important really, just a small validation
   Else
        Do While filename <> "" 'so the DIR function scans all files
              **'here I get the error message SUBSCRIPT OUT OF RANGE:**
              Workbooks.Open(path & filename).Sheets("Sheet1").UsedRange.Find(BOM).Offset(0, 5).Copy

              'the macro never gets to this line: 
              ThisWorkbook.Sheets("Sheet1").Range("c" & Range("c5").End(xlDown).Row).Paste
              Workbooks.Open(path & filename).Close
              filename = Dir
        Loop

End If

End Sub

答案1

以下是我接近真正问题的方法:

将导致问题的很长的行拆分成较小的部分,例如

  Set wrkbk = Workbooks.Open(path & filename)
  Set sht = wrkbk.Sheets("Sheet1")
  Set rang = sht.UsedRange
  Set fnd = rang.Find(BOM)
  If Not (fnd Is Nothing) Then
     cpy = fnd.Offset(0, 5).Copy
  End If

然后你就会发现问题就出在这行Set sht = wrkbk.Sheets("Sheet1")

这意味着:有一个工作簿没有名为“Sheet1”的工作表。也许该工作表已被用户重命名。

当 Excel 出现错误时停止,右键单击filename并选择Add watch查看哪个文件受到错误工作表名称的影响。

相关内容