下面这一篇,是Excel使用中技术含量极高,能解决很多工作中痛点的技术文章。

首先,我们来试想一下,你每天下班,总有一大堆各种报表、汇报要逐一地用微信发给各位领导,于是乎,你就得逐一去编辑、发送。这个其实已经不算麻烦的了,你仅只是发送小部分,并且不太复杂。但如果你面对的是广大的客户、供应商、员工,那么这个体量就太大了,要逐一去发送,那还不疯了。

如果可以,使用Excel将数据批量推送至每个人微信上,那么这个操作是不是可以解决很多问题呢。

当然,这是有前提的,你首先得注册有企业微信号,相关人员都已经加入了注册的企业微信。否则,你根本没有可能使用第三方直接给微信推送消息。因为,隐私政策,个人微信是不直接向第三方开放的。至于如何注册企业微信,就不在本文中阐述了。

话不多说,直接上代码:

  1. 定义全局变量

Public Const CorpID As String = “你的企业ID” Public Const SecretStr As String = “你的应用程序secret” 'Agentid=0 范围全局 ‘定义传输部分的内容模板,格式为json Public Const SendText As String = "{""touser"": ""成员ID"",""toparty"": ""部门ID"",""totag"": ""标签ID"",""msgtype"": ""消息类型"",""agentid"": 企业应用id,""text"": {""content"": ""消息内容""},""safe"":0}" Public Const ErrCode As String = """errcode"":0,""errmsg"":""ok""" Public Const SendUrl As String = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="

2. 定义获取token的函数

Function get_token(Secret As String) As String Dim http Set http = CreateObject("MSXML2.ServerXMLHTTP") Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" & CorpID & "&corpsecret=" & Secret http.Open "POST", Url, False http.send "" If http.Status = 200 Then Token = http.responseText End If '解析token字符串 If InStr(Token, "access_token") > 1 Then Token = Split(Token, ",")(2) Token = Split(Token, ":")(1) Token = Replace(Token, """", "") Else Token = "" End If End Function

3. 定义发送信息处理以及发送过程控制的函数

Function SendMSG(uid As String, Msg As String) As String 'uid 也可以多人发送中间用竖线“|”隔开 Dim http On Error Resume Next Set http = CreateObject("MSXML2.ServerXMLHTTP") '调用自定义函数获取token令牌 Url = SendUrl & get_token(SecretStr) Str1 = SendText '替换模板参数值 Str1 = Replace(Str1, "成员ID", uid) Str1 = Replace(Str1, "消息内容", Msg) Str1 = Replace(Str1, "企业应用id", "1000007") Str1 = Replace(Str1, "消息类型", "text") '备用 Str1 = Replace(Str1, "部门ID", "") Str1 = Replace(Str1, "标签ID", "") Msg = Str1 '使用HTTP方法发送消息 http.Open "POST", Url, False http.send Msg If http.Status = 200 Then Str1 = http.responseText End If '提取无效人员,发送失败时,提取失败信息 If InStr(Str1, "errcode"":0") > 0 Then SendMS = "成功" Str1 = Split(Str1, "invaliduser")(1) Str1 = Split(Str1, """")(2) Else SendMSG = Str1 End If End Function

4. 子程序代码,供工作簿按钮使用

Sub cmd_send() Dim uid As String Dim uname As String Dim amount As Double Dim i As Integer Dim msg_text As String i = ActiveCell.Row uid = Cells(i, 1) uname = Cells(i, 2) sup_amount = Application.WorksheetFunction.Text(Cells(i, 3), "#,##0.00") paid_amount = Application.WorksheetFunction.Text(Cells(i, 4), "#,##0.00") unpaid_amount = Application.WorksheetFunction.Text(Cells(i, 5), "#,##0.00") ‘信息推送模板定义 msg_text = "尊敬的供应商:n" _ & Space(4) & uname & "n" _ & "n" _ & " 截至本日,您的结算情况如下:n" _ & " 1.供货金额为:n" _ & Space(4) & sup_amount & "n" _ & " 2.累计已支付金额为:n" _ & Space(4) & paid_amount & "n" _ & " 3.尚未支付金额为:n" _ & Space(4) & unpaid_amount & "n" _ & "n" _ & " 如有任何疑问,请致电至我公司财务。" MsgBox SendMSG(uid, msg_text) End Sub

在工作表上面放置一个窗体按钮,再给这个按钮指定宏,这里宏选择子函数sendMSG

点击发送成功后,可以看到微信已经收到该条信息了。

掌握了这个办法后,那么就可以做很多事了,移动办公、协同办公、办公自动化都可以实现。当然了,对于企业微信的操作不仅仅就推送消息这么简单,还有很多可以做,毕竟是交互嘛,比如,获取微信人员信息、获取组织机构信息、连接外部客户、供应商、连接第三方开放平台等等。这里就不一一赘述了,如果感兴趣,可以自己研究企业微信的开发文档,里面有详细的API开发说明。