VBScript从其他工作簿searchExcel工作簿的值
我是VB脚本新手,请耐心等待! 我正在尝试创build一个使用两个不同的Excel工作簿的工作表的脚本。 它打开第一个工作表并遍历指定的范围。 我想要它然后采取该范围中的每个单元格的值,并search第二个工作表(在不同的工作簿中),并search在第一个工作表中find的值,如果find该值,返回的地址它被发现的单元格。例如:
Worksheet1 ╔══════╦═════╗ ║ Name ║ Age ║ ╠══════╬═════╣ ║ Matt ║ 22 ║ ║ Jeff ║ 13 ║ ╚══════╩═════╝ Worksheet2 ╔═══════╦════════════╗ ║ Name ║ DOB ║ ╠═══════╬════════════╣ ║ Dave ║ 09/12/2001 ║ ║ Frank ║ 01/25/1992 ║ ║ Jeff ║ 10/10/2013 ║ ╚═══════╩════════════╝
因此,该脚本将输出: A4
因为它find了第二个工作表中第一个工作表的指定范围( A2:A3
)中的一个值,并且正在返回该单元格的位置。
这里是我有的代码:
Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Dim val Set objWorkbook = objExcel.Workbooks.Open("C:\Users\username\file.xlsx") Set objWorksheet = objWorkbook.Worksheets("Sheet1") Set objWorkbook2 = objExcel.Workbooks.Open("C:\Users\username\file2.xlsx") Set objWorksheet2 = objWorkbook2.Worksheets("Sheet1") For Each c In objworksheet.Range("A2:A3").Cells val = c.value Set objRange = objWorksheet2.UsedRange Set found = objRange.Find(val) Wscript.Echo found.AddressLocal(False,False) Next
当我运行这个代码时,出现以下错误:
错误:所需对象:“find”
我确信有一些明显的我在这里失踪,但我已经旋转了很长一段时间,希望有人能提供一些反馈意见。 任何帮助是极大的赞赏!
如果成功, Find()
函数会返回一个Range
对象,否则返回Nothing
。 所以你需要testing返回值以确保它是一个Range
对象,然后再尝试访问它的属性和方法。
For Each c In objworksheet.Range("A2:A3").Cells val = c.value Set objRange = objWorksheet2.UsedRange Set found = objRange.Find(val) ' Test for success! If Not found Is Nothing Then Wscript.Echo found.AddressLocal(False,False) End If Next