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

无法以编程方式刷新VBA代码,vba,excel,excel-2013,Vba,Excel,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(strFi

我有一个类似这样的例行程序:

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,但它不起作用。我错过了什么

通常,我得到的错误是运行时错误438:对象不支持此属性或方法-这不是我在这个特定的代码变量上遇到的错误,而是一个
错误91:Object变量或未设置块变量

但是我分解了所有的声明,以查看导致问题的行的确切部分。为了得到准确的错误信息,在玩这个游戏的过程中,它突然对我起了作用(无论如何,对我来说,这是莫名其妙的)。我现在正试图找到正确的组合,但如果您能帮助我获得错误信息,我将不胜感激。

您应该:

Set vbComp = ActiveWorkbook.VBProject.VBComponents(strCompName)

您可能还想从
.import(strFile)

而不是一般的“它不工作”,请具体说明。当您
调试.print
时,
strCompName
的值是多少?@Marc,在这种情况下是Accounts。这是正确的名称。@Douglancy,我扩展了我的问题。
vbComp=
应该是
Set-vbComp=
,我不确定VBE组件的名称是否总是与其文件名匹配。