无法以编程方式刷新VBA代码

时间:2013-12-24 15:41:41

标签: excel vba excel-vba excel-2013

我有一个看起来像这样的例程:

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 :(得分:3)

你应该not using Set

Set vbComp = ActiveWorkbook.VBProject.VBComponents(strCompName)

您可能还希望.import (strFile)中的remove the parentheses