2013-12-24 2 views
1

программно У меня есть рутина, которая выглядит следующим образом:Невозможно обновить 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.

Но я сломал все объявления, чтобы увидеть точную часть линии, вызвавшую проблему. Играя с этим, чтобы получить точное сообщение об ошибке, он внезапно работал на меня (необъяснимо, для меня в любом случае). Сейчас я пытаюсь найти правильную комбинацию, но любая помощь с сообщениями об ошибках будет оценена по достоинству.

+1

Вместо общего «это не работает», пожалуйста, будьте конкретны. –

+0

Когда вы 'debug.print', что такое значение' strCompName'? – Marc

+0

@Marc, это учетные записи в этом случае. Это правильное имя. – Yishai

ответ