如何使用VBA读取已关闭的Excel文件中的文件

时间:2014-06-12 20:22:50

标签: excel-vba vba excel

我是VBA的新手,我一直在研究如何在工作表中找到某些单词。到目前为止,我可以在活动工作表中执行此操作,但不能在另一个文件夹中的另一个工作簿中执任何人都可以帮我找到在封闭的Excel文件中找到单词的方法吗?这是我用来在我运行宏的当前活动文件中查找单词的内容。先谢谢你。

 Cells.Find(What:="24643", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
 xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
 , SearchFormat:=False).Activate

1 个答案:

答案 0 :(得分:2)

Cells,除非得到工作表参考资格,否则始终会引用ActiveSheet.Cells

同样,ActiveCell 始终指的是ActiveSheet的ActiveCell。

因此,要将其修改为其他工作簿,请将其限定为:

Dim foundRange as Range
With Workbooks("Book2.xlsm").Sheets("Sheet1")   '#Modify as needed
    Set foundRange = .Cells.Find(What:="24643", After:=.Cells(1,1), _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
End With
If Not foundRange Is Nothing Then foundRange.Activate

您可能需要将.Cells(1,1)更改为其他单元格位置,具体取决于您要执行的操作。

我认为不能对{em>已关闭的工作簿文件使用.Find方法。

您可以先打开文件:

Dim wbFind as Workbook
Set wbFind = Workbooks.Open("c:\path\to\your\file.xlsx")

然后使用上面的方法:

Dim foundRange as Range

With wbFind.Sheets("Sheet1") 'Modify as needed
    Set foundRange = .Cells.Find(What:="24643", After:=.Cells(1,1), _
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
End With
If Not foundRange Is Nothing Then foundRange.Activate