Excel Vba 调用WebService的两种方式,解决MSSOAP30 64位不兼容问题_weixin_34419326的博客-程序员宅基地

技术标签: ViewUI  json  javascript  

虽然是很老的技术了,但是碰到了,还是讲讲.....

Office Excel 采用Vba的方式调用WebService主要有两种方式:

1.n年前,微软提供MSSOAP30组件,为VC++编写的,这种方式和.Net调用WebService方式很类似,都是添加引用;但是致命的缺陷是不支持64位的Office程序(支持64位机器中运行32位的Office);而且微软已经明确提醒开发者,已经放弃了MSSOAP30,替代为Framework的office开发。

此路不通....

2.采用基本的HTTP方式调用,这个方式非常好,理论上可以调用任何url,接受responseBody,完美支持WSDL、Restful的webservice,需要注意的是.Net开发的WSDL WebService需要开启Ajax调用方式

Function GetWsrrRlt(XmlStr As String) As String
Dim objHTTP, xmlDOC

'调用webservice方法
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC = CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://192.168.0.114/wsrr.asmx/CallByXML"
objHTTP.Open "POST", strWebserviceURL, False'默认是POST方式
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send ("{XmlInput:'" & XmlStr & "'}")'XmlInput是Ws的参数
GetWsrrRlt = CStr(BytesToBstr((objHTTP.responseBody), "utf-8"))
GetWsrrRlt = GetStringByJson(GetWsrrRlt)'.net3.5,.net4.0和以后的ws,默认返回的json字符格式为{"d":"这里是你期望的json,例如{"result":"1"}"}
'解析JSON格式
'Dim objSC, strJSON, objJS
'strJOSN = "{ ""myname"":""liucqa"",""myid"":""007"" }"
'Set objSC = CreateObject("MSScriptControl.ScriptControl")    '调用ScriptControl对象
'strJSON = "var o=" & strJOSN & ";"
'objSC.Language = "javascript"
'objSC.AddCode (strJSON)
'Set objJS = objSC.CodeObject.o
'MsgBox CallByName(objJS, "myname", VbGet) & "=" & CallByName(objJS, "myid", VbGet)


'Dim soapClient As SoapClient30
'Set soapClient = CreateObject("MSSOAP.SOAPCLIENT30")
'soapClient.MSSoapInit "http://192.168.0.114/wsrr.asmx?wsdl", "WSRR", "WSRRSoap", ""
'soapClient.ClientProperty("ServerHTTPRequest") = True
'GetWsrrRlt = CStr(soapClient.callbyxml(XmlStr))
End Function

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34419326/article/details/85549251

智能推荐

Java数据结构——不带头单向非循环链表_数据结构不带头结点、非循环链表图_Racheil的博客-程序员宅基地

一、链表的概念链表:采用链式存储结构存储的线性表,所谓的链式是指每个节点保存下一个节点的引用链表的分类:单向、双向 带头节点、不带头节点 循环、非循环根据以上三种分类,即可组成八种不同类型的链表链表的特点:链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理,但是链表失去了顺序表可以随机读取的优点,同时,链表增加了节点的指针域,空间开销比较大。二、不带头单..._数据结构不带头结点、非循环链表图

特征提取算法 知乎_目标检测算法工程落地_文刀吉吉的博客-程序员宅基地

复盘一下在实现检测算法落地过程中所经历的一个流程;列出几点重点说明一下:1、网络的选取和调参是关键;网络选取:考虑到实际情况的实时性、硬件性能,需考虑参数量较小的检测网络,更倾向于单阶段式的网络;基于yolossd等的多个变体网络;其次基础特征提取网络backbone的替换,传统都是vgg的特征提取,现在mobilenet、v2v3都可以大幅提速;进一步的提速办法还有初始化、蒸馏以及去掉某些基础特...

考计算机软考还需要评定职称吗,软考评职称还需要年限吗_郑默默的博客-程序员宅基地

软考评职称还需要年限吗作者:核心期刊目录查询 发布时间:2021-06-24软考即软件水平考试,是计算机技术与软件专业技术资格(水平)考试。由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试。软考是可以评职称的,因此关于软考,也是有人问, 软考评职称还需要年限吗? 一般来说软件工程师考试过了的话就不需要参加中软考即软件水平考试,是计算机技术与软件专业技术资格(水平)考试。由国家人力资源和..._取得软考中级证书评专技中级要年限吗

【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真_龙格库塔法matlab_fpga和matlab的博客-程序员宅基地

龙格-库塔法是用于模拟的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。令表述如下。这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积决定。该斜率是以下斜率的加权平均k1是时间段开始时的斜率;k2是时间段中点的斜率,通过采用斜率k1来决定y在点tn+h/2的值;k3也是中点的斜率,但是这次采用斜率k2决定y值;k4。..._龙格库塔法matlab

随便推点

MySQL学习进阶路线_数据与人的博客-程序员宅基地

根据2019 数据库趋势报告显示,年度最受欢迎的数据库是 MySQL。虽然市场占有率Oracle排名第一,MySQL和SQLServer并驾齐驱,但毫无疑问,MySQL正变得越来越流行。随着MySQL地位爆炸式的提升, MySQL DBA的市场缺口也日益剧增,优秀的MySQL DBA正在成为各个公司抢手的人才。需求来了,随着而来的是问题,如何快人一步提高自身技能,让自己在日益激烈的技术挑战中不断增值、脱颖而出?希望本文能为MySQL DBA的前行航路提供一些真实的浮标。MySQL进阶路线:DB

Java工具类之Base64Utils实现base64码转换为文件流等互换_nxgx18_Architect_csdn的博客-程序员宅基地

有时候,我们会遇到将文件转化为base64编码后的字符串,传递到服务器上,然后让服务器处理操作。我写了这个utils包,实现了文件和base64的相互转化。懒汉模式1、通过双判断的方式,这种方式之所以是双判断,就是在a和b同时调用了这个方法,并都堵在了锁上,如果a线完事,b肯定就进去了, 如果不加上判断,b又实例化了一次。2、通过直接给实例化方法加锁的方式,这种方式比较简单粗暴,但是..._nxgx18

基于龙格-库塔法(Runge-Kutta methods)的函数寻优算法_心️升明月的博客-程序员宅基地

文章目录一、理论基础1、搜索机制的根源2、更新位置3、增强解的质量(ESQ)4、RUN算法伪代码二、实验测试及分析三、参考文献四、Matlab程序下载链接一、理论基础RUN(Runge Kutta optimizer )解释了RK(Runge-Kutta methods)技术的主要逻辑和一群代理的基于种群的进化。事实上,RK使用特定公式来计算斜率和求解常微分方程。RUN的主要思想基于RK方法中提出的计算坡度概念。运行使用计算出的斜率作为搜索逻辑,在搜索空间中探索有希望的区域,并根据基于群的优化算法的逻辑_runge-kutta method

解决虚拟机 /dev/mapper/centos-root爆满问题_hikos-root满了_码猿小站的博客-程序员宅基地

最近查看自己的虚拟机磁盘使用情况时,发现/dev/mapper/centos-root 使用接近爆满状态,为了让虚拟机能够正常使用,故需要动态扩容来搞定。将自己具体操作记录下来,恳请批评指正。 **1**.**用df -h 查看磁盘使用情况,如下**:![在这里插入图片描述](https://img-blog.csdnimg.cn/20191004173236980.png) **2**.*..._hikos-root满了

.Net报:It was not possible to find any installed .NET Core SDKs的问题根源和解决_蛐蛐蛐的博客-程序员宅基地

吐槽一个小问题:由于要运行别人的一个工具,需要在windows命令行中运行dotnet,我想当然地在google里搜了.NET Core,在这个页面:https://dotnet.microsoft.com/download看到有好几个选项,感觉应该和JRE,JDK的关系差不多吧,就下载了.Net Core Runtime,结果在Windows命令行中输入dotnet,可以有Usage之类的提示,以为就装好了,但是运行别人工具的时候输入:dotnet run 项目名称.csproj就报了:

推荐文章

热门文章

相关标签