программно У меня есть рутина, которая выглядит следующим образом:Невозможно обновить VBA код
Private Sub RefreshByName(strFileType As String)
Dim strFile As String
strFile = Dir(".\*." & strFileType, vbNormal)
Do While Len(strFile) > 0
Dim strCompName As String
Dim vbComp As Object
strCompName = Left(strFile, Len(strFile) - 4)
'Fails here
vbComp = ActiveWorkbook.VBProject.VBComponents(strCompName)
ActiveWorkbook.VBProject.VBComponents.Remove vbComp
ActiveWorkbook.VBProject.VBComponents.import (strFile)
strFile = Dir
Loop
End Sub
По большей части то, что я прочитал в Интернете, это должно быть возможным ссылаться на VBComponents по имени, но это не делает Работа. Что мне не хватает?
Обычно я получаю ошибку Run-time error 438: Object doesn't support this property or method
. - это не ошибка, которую я получаю на этом конкретном варианте кода - скорее это error 91: Object variable or With block variable not set
.
Но я сломал все объявления, чтобы увидеть точную часть линии, вызвавшую проблему. Играя с этим, чтобы получить точное сообщение об ошибке, он внезапно работал на меня (необъяснимо, для меня в любом случае). Сейчас я пытаюсь найти правильную комбинацию, но любая помощь с сообщениями об ошибках будет оценена по достоинству.
Вместо общего «это не работает», пожалуйста, будьте конкретны. –
Когда вы 'debug.print', что такое значение' strCompName'? – Marc
@Marc, это учетные записи в этом случае. Это правильное имя. – Yishai