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
還可設置判斷語句,用以跳過某些空的信息。對微信昵稱重複的,要自己改備注分開,程序可不能識别分開。
,