Excel 透過 VBA 呼叫 Web Service
本文的重點在於幫助交易員透過 VBA 可以呼叫到網路上的 Web Service, 當然啦, 版主會假設大家已有寫 VBA 的基礎經驗, 自然就不介紹如何編輯 VBA 程式或是安全性如何調整才可以執行等問題 !
首先, Excel 並無內建呼叫 Web Service 的功能, 但我們可以透過微軟提供的元件 Microsoft SOAP Toolkit Version 3 來達到我們的目的
或是透過 Google 來搜尋下載皆可
再者, 我們必須找一個網路上可以讓我們免費測試的 Web Service, 才能完成我們的練習, 這裡有不少測試的 Web Service http://www.xmethods.com
於是版主挑了一個 ISBN 的 Web Service 來練習 http://webservices.daehosting.com/services/isbnservice.wso?WSDL
當我們輸入參數為字串的 ISBN 號碼後, 對方會傳回 True / False 代表這是否為合法的 ISBN 號碼, 非常類似我們平常使用 Function 函數一樣
版主在 Excel 拉了一個元件 CommandButton1 並且寫了一段程式
Private Sub CommandButton1_Click()
'初始化
Dim oSOAP As Object
Set oSOAP = CreateObject("MSSOAP.SoapClient30")
Call oSOAP.mssoapinit("http://webservices.daehosting.com/services/isbnservice.wso?WSDL")
Dim isTrueFalse As Boolean
'呼叫 Soap Web Service
isTrueFalse = oSOAP.IsValidISBN10(Sheet1.Cells(1, 1))
MsgBox (Sheet1.Cells(1, 1) & " ISBN " & isTrueFalse)
End Sub
執行後, 程式會抓取 Sheet1.Cells(1, 1) 格子裡面的 ISBN 號碼, 並呼叫 Web Service 上的功能 IsValidISBN10 來驗證所傳的號碼是否為真
於是版主找了一本書測試【人月神話】ISBN: 986-7889-18-5 果然傳回 True , 但當版主故意輸入 ISBN: 986-7889-18-4 卻傳回 False
發現了沒 ? 簡單的呼叫 Web Service 卻讓 Excel 輕鬆很多, 程式碼不需要包的太複雜, 由廠商或資訊部或 IT 人員提供 Web Service , 讓交易員簡易地設計出自己想要的程式組合, 且不必太鑽研到底 ISBN 規則是如何判斷, 反正 Web Service 會幫你搞定 !
孫中山先生曾說過【知難行易】, 意思就是說要
知道 Web Service 裡面程式碼的邏輯很難, 但是執行呼叫卻是很容易的事情啊 ~
若想多了解 SOAP Toolkit 可以參考微軟網址 http://www.microsoft.com/TAIWAN/technet/book/WebServices/default_2.aspx
當然這不只可以套用在 VBA 裡, 其實連 VB6 也適用, 大家自己 DIY 試試看吧 ~
Excel VBA 範例下載 http://cat.hfu.edu.tw/~m9025004/download/ExcelToWebService.zip