2012-02-09 13 views
0

COM公開.NETアセンブリから共有プロパティにアクセスできますか?VBA to COM Exposed .NETアセンブリ - オブジェクトがこのプロパティまたはメソッドをサポートしていません

VBA

Dim appExcel As Object 
    Dim objAppSingleton As Object 
    Set objAppSingleton = CreateObject("Pitchbook.CommonUtils.Application.PitchbookAppSingleton") 
    appExcel = objAppSingleton.CurrentPitchbookExcelApp 

VB.NET

<ProgId("Pitchbook.CommonUtils.Application.PitchbookAppSingleton")> _ 
Public Class PitchbookAppSingleton 

    Private Shared _currentPitchbookExcelApplication As PitchbookAppExcel 
    Private Shared _syncLockExcel As Object = New Object() 

    Public Shared ReadOnly Property CurrentPitchbookExcelApp As PitchbookAppExcel 
     Get 
      If _currentPitchbookExcelApplication Is Nothing Then 
            SyncLock [_syncLockExcel] 
        If _currentPitchbookExcelApplication Is Nothing Then 
         Dim currPitchbookExcelApplication As New PitchbookAppExcel() 
         _currentPitchbookExcelApplication = currPitchbookExcelApplication 
        End If 
       End SyncLock 
      End If 
      Return _currentPitchbookExcelApplication 
     End Get 
    End Property 

End Class 


Public Class PitchbookAppExcel 
    Inherits PitchbookApp 

    Protected Friend Sub New() 
     MyBase.New()       
    End Sub 

End Class 

ラインappExcel = objAppSingleton.CurrentPitchbookExcelAppはエラーを与える: 実行時エラー '438': オブジェクトが」doesnのこのプロパティまたはメソッドをサポートしていません

+0

あなたは非共有プロパティ宣言から共有プライベートオブジェクトにアクセスできませんか? –

答えて

0

これは非常に単純な問題ですが、回答がまだわからない場合はです。COM公開.NETアセンブリから共有プロパティにアクセスすることはできません。しかし、少なくとも直接...ではなく、インスタンスラッパーを作成すると共有プロパティにアクセスできます。私の場合

http://www.xtremevbtalk.com/showthread.php?p=1326018
http://support.microsoft.com/Default.aspx?kbid=817248

Iは、具体的にインスタンスを介して、関連する共有ユーティリティ関数を露出VBAで使用するためのオブジェクトを作成するために、ファサードパターンを使用します。みなさんのおかげです。 http://en.wikipedia.org/wiki/Facade_pattern

1

VBでSetと言ってオブジェクト変数を設定する必要があります。

「設定」と言っていない場合、VBAはデフォルトのメソッドを探し、それを呼び出して非オブジェクト型を取得します。デフォルトのメソッドが定義されていない場合(dispid = 0)、エラーが発生して失敗します。

+0

ありがとうございます。私はまだSet appExcel = objAppSingleton.CurrentPitchbookExcelAppでも同じエラーが発生する – dior001

+1

@ ernie99、それから私は知らない。 Visual StudioデバッガでVBホストを実行してブレークポイントを固定しようとしましたか? – Ben

+0

私はExcelで組み込みのVisual Basic IDEを使用しています。私はブレークポイントを設定し、コードを踏んだ。地元のウィンドウを見ると、objAppSingletonは正しくインスタンス化します。つまり、値は何もありません。オブジェクトを展開すると、メンバーがリストされません。私はそのオブジェクトのメンバーが列挙されていることを期待していますが、それは問題ではなくIDEの単なる制限だと思います。 VBAについて私は明らかに分かりません。すべてが正しく設定されているようです。私はそれが共有プロパティだからだと思う。とにかく掘り続けるつもりです。 – dior001

関連する問題