我正在运行一个程序,我必须一个接一个地打开文件夹中的.xls文件并从中获取信息。在我的函数开始时,我为我要打开的每个.xls文件运行下面的代码。
但是,每隔一段时间,我在第四行代码上收到此错误:"ActiveX 组件无法创建对象"。
在错误窗口中单击调试后,我只需单击继续,代码即可开始正常运行。它打开文件并获取我想要的信息。
为什么会出现此错误?我不想继续点击以推进此过程。
提前谢谢。
Function getPerfumeName(file)
Dim XL As Excel.Application
Dim WBK As Excel.Workbook
Set XL = CreateObject("Excel.Application")
Set WBK = XL.Workbooks.Open(file)
phrase = Split(WBK.Sheets(1).Cells(3, 1).Value, ":")
If phrase(0) = "PERFUME GCAS" Then
getPerfumeName = phrase(UBound(phrase))
Else
getPerfumeName = ""
End If
WBK.Close
Set XL = Nothing
End Function
我为我要打开的每个.xls文件运行下面的代码。
也许是因为您创建了太多?在循环外,只使用它一次,然后在循环内使用 Set WBK = XL.Workbooks.Open(file)
打开文件,然后在循环结束之前关闭文件......此外,由于您正在使用早期绑定,因此您可以在循环外使用一次Dim XL As New Excel.Application
,它将起作用。无需同时使用两条线...
Sub Sample()
Dim XL As New Excel.Application
Dim WBK As Excel.Workbook
For i = 1 To whatever
Set WBK = XL.Workbooks.Open(file)
'
'~~> Do Something
'
WBK.Close (False) 'or WBK.Close(True)
Set WBK = Nothing
Next i
XL.Quit
Set XL = Nothing
End Sub