2016-05-31 188 views
0

Visual Basicでモジュールをインポートしようとしています。VBA Excelでモジュールをインポート中にエラーが発生しました

以下

私はモジュールをインポートするために使用されるコードです:

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

最終編集:

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 

EDIT:実際には、誤差がかなりWorkbooks("try.xlsm")ある可能性がありここでファイルパス全体を記述する必要があります...またはコードを呼び出しているブックの場合は、を使用してください

EDIT2:これを試してみてください。マクロを呼び出すためとして

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()と呼ばれているので、Call CreationMacroAuto()と呼びます。

+0

ああ、それが今働いているなら、それは良いです – Sun

+0

私はその理由を発見したと思う、それはセキュリティのためです。言い換えれば、モジュールを使用するためにdevelopperのオプションを有効にするためにexcelを手動で許可する必要があります。どうすればこの部分を自動化できますか?もう1つの質問は、モジュールをインポートするときに、モジュールを呼び出すコードを書きました。 'Call macro.bas'ですが、VBAはこのモジュールを認識しませんでした。私はそれが正常だと思うので、私はそれをインポートするまで、モジュールは存在しません。どうすればこの問題を解決できますか? – maximus

+0

私があなたに示した参考文献はちょうどそれを行うべきです。コードの先頭に挿入します。後でマクロを呼び出すときは、.basファイルではなくその中のサブファイルを呼び出す必要があります。自動的に呼び出されないようにするには、イベントを無効にする必要があります: 'application.enableevents = false' – Sun

関連する問題