2

WCF Web サービスを介してメソッドを作成しました。サーバーにアップロードしました。私がやりたいのは、そのメソッドを Excel VBA マクロで呼び出すことです。出来ますか?

何かのようなもの:

Dim client As DaybookServicesClient = New DaybookServicesClient()
' Use the 'client' variable to call operations on the service.

' Calls my method
client.ExecuteSQLJob()

' Always close the client.
client.Close()

Excel VBA で自分のサービスを参照するにはどうすればよいですか?

4

2 に答える 2

2

1 つの方法は、WebGet wcf サービスを作成することです。サービスは adorecordset xml を返します。マクロでは、次のコードを使用してレコードセットを取得できます。

    Public Function GetRSFromString(sXML As String) As Object
   Dim oStream As Object, oRecordset As Object
   Set oStream = CreateObject("ADODB.Stream")
   oStream.Open
   oStream.WriteText sXML
   oStream.Position = 0
   Set oRecordset = CreateObject("ADODB.Recordset")
   oRecordset.Open oStream
   oStream.Close
   Set oStream = Nothing
   Set GetRSFromString = oRecordset
   Set oRecordset = Nothing
End Function


Public Function GetSoapRequest()
    Dim strResult As String
    Dim xmlhtp As Object, xmlDoc As Object, oRecordSetFromXML As Object
    Set xmlhtp = CreateObject("msxml2.xmlhttp.6.0")
    With xmlhtp
            .Open "get", "http://[server]/ServiceName.svc/FunctionName", False
            .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            .Send
            Set xmlDoc = CreateObject("msxml2.DOMDocument.6.0")
            strResult = .responseText
            xmlDoc.loadXML strResult
            Set oRecordSetFromXML = AdoFunction .GetRSFromString(xmlDoc.Text)
    End With
    Set xmlDoc = Nothing
    Set xmlhtp = Nothing               
End Function
于 2012-06-22T12:30:54.943 に答える
0

Webサービスリファレンスツールを使用してExcelからWebサービスを呼び出し、サービスのプロキシを生成してから、VBAコードで電話をかけることができます。

しかし、私は以前にこれを機能させようとしましたが、VBとJava(サービスをホストしていた)の間の相互運用性のために失敗しました。

通話が一方向の場合(VBAコードが応答を必要としない場合)、VBAコードにmsmqを介して仲介サービスにメッセージを送信させ、仲介サービスがあなたに代わって通話を発信することをお勧めします。これは私が使用することになったソリューションです。

于 2012-06-22T11:55:17.300 に答える