VBA并不能真的調(diào)用微信程序,用的是VBS腳本模擬按鍵操作方式。
表格式樣:
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
----------------------------'上面一句,是為下面Sleep 延時語句用的
Sub 發(fā)微信()
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" 是模擬進(jìn)行鍵盤上的按鍵輸入,^代表CTRL鍵,%代表ALT鍵,w代表W鍵;讓在一起就是Ctrl+Alt+W,這是微信的默認(rèn)快捷鍵。如果你改動過,就要改為對應(yīng)的。附:+代表Shift鍵。 "^% "代表CTRL鍵+ALT鍵+空格(我的微信快捷鍵)
ws.Run "mshta
vbscript:ClipboardData.SetData(""Text""," & Chr(34) & Cells(i, 1) & Chr(34) & ")(close)", 0, True 此句將Cells(i, 2)的文本內(nèi)容發(fā)送到剪貼板。圖片是不能識別的。我們在Cells(i,1)中存入微信昵稱。SetData(""Text""與SetData(" & Chr(34) & "Text" & Chr(34) & "是等同的,Chr(34)就是雙引號。""Text""是SetData的參數(shù),但是這個參數(shù)無"shape",所以不能處理圖片信息。
ws.SendKeys "^f" 發(fā)送Ctrl+F,微信里自帶的查找人的快捷鍵。Sleep 延時函數(shù),用過“按鍵精靈”的同學(xué)會感覺很熟悉。1000為1秒鐘。這個時間需要自己把握,取決于你電腦上微信運(yùn)行的流暢度。ws.SendKeys "^v" ,將Cells(i,1)中的微信昵稱,輸出到查找窗口。
ws.SendKeys "{ENTER}" 按下回車鍵,光標(biāo)會跳轉(zhuǎn)到微信的信息輸入窗口。此時,再將Cells(i,2)中的信息發(fā)送到剪貼板,然后復(fù)制到微信的信息輸入窗口,按下回車就完成了一個發(fā)送信息的操作。由于ClipboardData.SetData只能處理文本,所以Cells(i,2)只能是一個單元格,不能改成Range(B2:D2)這種區(qū)域。
當(dāng)然 i 的最大值可以改為動態(tài)的:如Cells(Rows.Count, 1).End(xlUp).Row
還可設(shè)置判斷語句,用以跳過某些空的信息。對微信昵稱重復(fù)的,要自己改備注分開,程序可不能識別分開。