如何将VBScript宏导入Excel工作簿?

11 浏览
0 Comments

如何将VBScript宏导入Excel工作簿?

我有几个Excel工作簿,它们都共享相同的宏模块。我希望的是,在一个工作簿中编辑一个模块时,不必再在其他工作簿中编辑相同的模块。

当然,我的第一步是在保存时将模块导出为.bas文件。但问题是我无法在加载时导入它们。

我尝试了以下代码:

Private Sub Workbook_Open()
    Set objwb = ThisWorkbook
    Set oVBC = objwb.VBProject.VBComponents
    Set CM = oVBC.Import("C:\Temp\TestModule.bas")
    TestFunc
End Sub

与此同时,与此目录中的TestModule.bas文件中的内容如下:

Function TestFunc()
    MsgBox "TestFunc called"
End Function

当打开工作簿时,会出现编译错误:Sub or Function not defined。如果我手动导入模块,一切都正常。

谢谢任何建议。

0
0 Comments

问题的原因是无法从工作簿打开时导入VBScript宏。解决方法是将导入代码放入一个单独的模块中,并在工作簿打开时调用它。可以使用以下代码来调用导入代码:

Private Sub Workbook_Open()
    Application.OnTime Now, "ImportCode"
End Sub

如果导入成功,Import函数应返回一个对导入模块的引用。可以使用'If CM Is Nothing Then...'来测试它是否为空。不清楚为什么当导入失败时不会引发错误。尝试在工作簿加载后15秒钟调用导入函数,但仍然无法成功导入。将ImportCode放入一个常规模块中也不能解决问题。最终在提供的资源中找到了一种方法来解决问题。

0