Я запускаю программу, в которой мне нужно открывать файлы .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
I run this code below for each .xls file I want to open.
Может быть, потому что вы создаете их слишком много? Вне цикла используйте это только один раз, а затем внутри цикла используйте 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