在VBA Excel中导入模块时出错

时间:2016-05-31 08:25:11

标签: excel-vba vba excel

我正在尝试通过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

有人能帮助我吗?

1 个答案:

答案 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()