zoukankan      html  css  js  c++  java
  • 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来访问数据集中的各参数。  

    关于返回多条数据集,还未测试。

      

  • 相关阅读:
    “幽默也能挣钱”:学会把幽默运用在企业管理中
    能不能再爱一回
    好文章,转贴 与爱好写诗的同道共享(转载)
    你是我生命中永恒的歌
    失败后的激励
    充满竞争和不确定性:卓越领导者所应具备的五大美德
    追求成功人生:不可或缺的人生智慧“九商”
    中国草根创业指南针项目京城启动(转载)
    与你一起走过的日子
    《成功长青》作者告诉你有钱人怎么想
  • 原文地址:https://www.cnblogs.com/ranlx/p/3223149.html
Copyright © 2011-2022 走看看