VBA調用WebService


引言:

  最近做了個Excel調用WebService數據集並顯示和打印的工具,在網上沒查到相關資料,摳出以下方法,希望it's useful。

前奏:

要在Excel中調用Web服務,首先需要安裝微軟工具Office Web Service Toolkit,傻瓜式安裝。

第二步就要添加WebService引用,以中文版Office2010為例,Alt+F11,進入VBA界面,選擇[工具]->[引用],勾選"Microsoft XML, v6.0",如下圖所示。

 

第三步就是添加你需要調用的WebService服務了。選擇[工具]->[Web服務引用],勾選"Web服務URL",然后將URL錄入搜索並添加即可。

此步完成后,在工程視圖的類模塊下會出現"clsws_"開后的類文件,雙擊看下,正是我們所需要個方法(Happy一下)。當然這些操作在網上也是很常見的。

單返回值的調用:

如果Web服務返回單個數據,調用方法較為簡單,代碼如下,3行足以。

Dim ExampleVar As New clsws_GetCWBCPInfo
Dim strCWBNo As String
strCWBNo = ExampleVar.wsm_GetCWBNoForAustraliaLine("CAN", iCount)

返回單條數據集:  

因為我的Web服務是基於C#寫的,返回DataTable之類的數據集無法被VBA解析,沒辦法,只能想轍變通一下。

我的解決方案是返回一個實體類,把數據集的各項轉換成VBA所需的item子項。

先把實體類代碼發出來,

namespace Entity
{
    public class TB_CWB
    {
        public string cwb_no {get;set;}
        ......
public string Cnee_Address_JP {get;set;} public void SetProperty(DataRow dr) { cwb_no = dr["cwb_no"].ToString(); ......
Cnee_Address_JP = dr["Cnee_Address_JP"].ToString(); } }

接下來就是此隨筆的關鍵點了,VBA的調用。

    Dim cwbInfo As Object
    Dim WS_GETCWBCPInfo As New clsws_GetCWBCPInfo
    cwbInfo = WS_GETCWBCPInfo.wsm_GetCWBLabelInfoByJPCom(custBillNo, portName)
    
    cwb_no = cwbInfo.Item(0).Text
    ori = cwbInfo.Item(1).Text
    pcs = cwbInfo.Item(2).Text
    consignee_postcode = cwbInfo.Item(3).Text
    Sagawa_POSTCODE1 = cwbInfo.Item(4).Text

是的,通過Object.Item來訪問數據集中的各參數。  

關於返回多條數據集,還未測試。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM