VBA并不能真的调用微信程序,用的是VBS脚本模拟按键操作方式。
表格式样:
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
----------------------------'上面一句,是为下面Sleep 延时语句用的
Sub 发微信()
Set ws = CreateObject("wscript.shell")
ws.SendKeys "^%w"
For i = 2 To 10
ws.Run "mshta vbscript:ClipboardData.SetData(""Text""," & Chr(34) & Cells(i, 1) & Chr(34) & ")(close)", 0, True
Sleep 200
ws.SendKeys "^f"
Sleep 1000
ws.SendKeys "^v"
Sleep 1000
ws.SendKeys "{ENTER}"
Sleep 600
ws.Run "mshta vbscript:ClipboardData.SetData(" & Chr(34) & "Text" & Chr(34) & "," & Chr(34) & Cells(i, 2) & Chr(34) & ")(close)", 0, True
Sleep 500
ws.SendKeys "^v"
Sleep 500
ws.SendKeys "{ENTER}"
Next i
Set ws = Nothing
End Sub
语句释义:ws.SendKeys "^%w" 是模拟进行键盘上的按键输入,^代表CTRL键,%代表ALT键,w代表W键;让在一起就是Ctrl+Alt+W,这是微信的默认快捷键。如果你改动过,就要改为对应的。附:+代表Shift键。 "^% "代表CTRL键+ALT键+空格(我的微信快捷键)
ws.Run "mshta
vbscript:ClipboardData.SetData(""Text""," & Chr(34) & Cells(i, 1) & Chr(34) & ")(close)", 0, True 此句将Cells(i, 2)的文本内容发送到剪贴板。图片是不能识别的。我们在Cells(i,1)中存入微信昵称。SetData(""Text""与SetData(" & Chr(34) & "Text" & Chr(34) & "是等同的,Chr(34)就是双引号。""Text""是SetData的参数,但是这个参数无"shape",所以不能处理图片信息。
ws.SendKeys "^f" 发送Ctrl+F,微信里自带的查找人的快捷键。Sleep 延时函数,用过“按键精灵”的同学会感觉很熟悉。1000为1秒钟。这个时间需要自己把握,取决于你电脑上微信运行的流畅度。ws.SendKeys "^v" ,将Cells(i,1)中的微信昵称,输出到查找窗口。
ws.SendKeys "{ENTER}" 按下回车键,光标会跳转到微信的信息输入窗口。此时,再将Cells(i,2)中的信息发送到剪贴板,然后复制到微信的信息输入窗口,按下回车就完成了一个发送信息的操作。由于ClipboardData.SetData只能处理文本,所以Cells(i,2)只能是一个单元格,不能改成Range(B2:D2)这种区域。
当然 i 的最大值可以改为动态的:如Cells(Rows.Count, 1).End(xlUp).Row
还可设置判断语句,用以跳过某些空的信息。对微信昵称重复的,要自己改备注分开,程序可不能识别分开。