无法以编程方式刷新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组件的名称是否总是与其文件名匹配。