|
お世話になります。
書き方などいたらぬ点があるかと思いますが宜しくお願いします。
■状況
EXCEL-VBAからWEBサービスを呼び出す方法を検討しています。
WEBサービスの起動はSoapClientで成功しているのですが
引数や戻り値にVBAに存在しない型(構造体やList型)を
使う場合うまくいきません。
■お聞きしたいこと
--------------------------------------
1.クラスモジュールの使い方に誤りがありますでしょうか。
2.戻り値でユーザ定義型のリストを受け取った場合
どのように処理すれば良いでしょうか。
例えば戻り値をreturnObject(0)といった配列のように
取得できますでしょうか。また要素への参照は
returnObject(0).userIdと指定してもエラーですよね???
--------------------------------------
■WEBサービス仕様
--------------------------------------
呼び出し方法:testExec(customer)
要素名:customer
→データ型:CustomerInfo
→CustomerInfoは、testIdとtestNameという要素を持ちます
戻り値:businessList(Businessという構造体のリスト)
--------------------------------------
■構造体代わりに準備したクラスモジュール
'CustomerInfo.cls
--------------------------------------
Option Explicit
Public workTestId As String
Public workTestName As String
Property Get testId() As String
testId = workTestId
End Property
Property Let testId(ByVal testId As String)
workTestId = testId
End Property
Property Get testName() As String
testName = workTestName
End Property
Property Let testName(ByVal testName As String)
workTestName = testName
End Property
--------------------------------------
■VBAのコード
--------------------------------------
Dim rtnObject As Object
Dim oSoapClient As SoapClient30
Dim customer as CustomerInfo
Set oSoapClient = New oSoapClient30
oSoapClient.mssoapinit(WSDLのパス)
customer.testId = "ID"
customer.testName = "テスト太郎"
Set rtnObject = oSoapClient.testExec(customer) ←【1】質問の1です
'rtnObjectというオブジェクト型でとりあえず受けましたが
'戻り値をどう解析すればいいのでしょう?
'debug.print rtnObject(0).testId ←【2】質問の2です
--------------------------------------
■エラー内容
--------------------------------------
インターフェイスがサポートされていません。
--------------------------------------
|
|