我有一个看起来像这样的例程:
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
。
但是我分解了所有的声明,看到引起问题的线路的确切部分。在玩这个以获得确切的错误消息时,它突然对我有用(莫名其妙地,对我来说无论如何)我正在尝试找到正确的组合,但是对错误消息的任何帮助将不胜感激。
答案 0 :(得分:3)
你应该not using Set
:
Set vbComp = ActiveWorkbook.VBProject.VBComponents(strCompName)
您可能还希望.import (strFile)
中的remove the parentheses。