我正在尝试通过Visual Basic导入模块。
以下是我用于导入模块的代码:
Sub CreationMacroAuto()
Dim Modulos As String
Modulos = "C:\My_macro\macro.bas"
With Workbooks("try.xlsm").VBProject
.VBComponents.Import Modulos
End With
'assign value is the name of the sub in macro.bas
Call assign_value()
End Sub
我遇到错误1004:此行上的对象定义错误:
With Workbooks("try.xlsm").VBProject
有人能帮助我吗?
答案 0 :(得分:0)
最终修改:
Sub CreationMacroAuto()
Dim Modulos As String
Modulos = "C:/users/Sun/Desktop/StackOverflow/assign_value.bas" 'change filepath to yours
ThisWorkbook.VBProject.VBComponents.Import Modulos
Application.OnTime Now + TimeValue("0:00:01"), "callingNewSub"
End Sub
Sub callingNewSub()
Call Module1.assign_value
End Sub
将上面的代码放入一个模块中。这段代码对我有用。您可能还想将Module1重命名为其他内容,例如“assign_value_mod”,以减少出错的可能性。
原始答案和编辑:
您需要将此引用添加到您的代码中:
On Error Resume Next 'in case reference already exists
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", _
Major:=5, Minor:=3
On Error GoTo 0
编辑:事实上,错误可能与Workbooks("try.xlsm")
有关,因为您应该在此处编写整个文件路径...或者如果它是您从中调用代码的工作簿,那么只需使用{{ 1}}
EDIT2:试试这个:
ThisWorkbook
至于调用宏:不要写Sub CreationMacroAuto()
Dim Modulos As String
Modulos = "C:\My_macro\macro.bas"
On Error Resume Next 'in case reference already exists
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", _
Major:=5, Minor:=3
On Error GoTo 0
With ThisWorkbook.VBProject
.VBComponents.Import Modulos
End With
Call Module1.assign_value()
End Sub
,而是调用其中的子。例如,上面的子项称为Call macro.bas
,因此您可以将其称为CreationMacroAuto()
。