excel vba
程序员文章站
2022-05-14 22:58:00
...
1. excel所需环境支持
1.目前已确定支持excel vba脚本的版本为excel 2016。查看方式,打开excel点击左上角
文件->账户即可查看对应的excel版本。
2.更新自己的excel,需要获得官方部分api支持,详细安装过程科参考HTTP://club.excelhome.net/thread-1384490-1-1.html 。更新后可直接使用getMD5(),QRCode()等函数来测试,部分为网络api,部分会更新到本地提供支持,其中采用的getMD5()函数为本地支持。
2.添加js库支持
1.点击 开始->选项->加载项->转到->将上边的更新函数添加进来。
2.点击菜单栏 开发工具->Visual Basic进入编辑代码界面,点击工具->引用找到Microsoft Script Control 1.0打上对勾 点击确定。
3.开始编写自己的function或者sub
实例:http请求返回值处理
'用户登录的函数,返回uToken
Function loginToken(path As String, uId As String, pwd As String) As String
Dim HttpReq As Object
Dim strURL, strRLT
' 组装为一个完整的请求路径
strURL = path & "/login.action"
Set HttpReq = CreateObject("Msxml2.XMLHTTP")
HttpReq.Open "POST", strURL, False '设置为异步请求True
HttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" '可设置代理,一般做爬虫会这样处理
'设置请求头与数据格式编码等
HttpReq.setRequestHeader "CONTENT-TYPE", "application/json;charset=UTF-8"
Dim data As String
Dim password As String
'调用excel单元格函数
password = Evaluate("=GetMD5(""" & pwd & """)")
data = "{""uId"":""" & uId & """,""pwd"":""" & password & """}"
Rem MsgBox (data)
HttpReq.send data
'出现乱码时使用下边注释的代码解决乱码问题
Rem strRLT = StrConv(HttpReq.responsebody, vbUnicode, &H804)
Set xc = CreateObject("ScriptControl"): xc.Language = "JScript"
Set ye = xc.Eval("eval(" & HttpReq.responseText & ")")
loginToken = ye.result
End Function
总结:excel中的vba的编写所需的特殊对象需要依赖于c++提供的dll支持,对于json等处理可采用
New MSScriptControl.ScriptControl对象来进行json的解析与组装,其字符串拼接可采用+或者&来完成。对于Object的对象需要采用set来进行赋值,无返回值的函数采用call来进行调用。例如Dictionary类(java中的map,python中的Dict),对于复杂的excel操作我们可以通过录制宏来完成,方便与我们日常办公的需求可编写对应的function 或者sub来提高工作效率。
上一篇: Vue刷新页面的三种方式