Excel VBA+Selenium WebDriver发送WhatsApp多行消息拆分问题求解
解决WhatsApp Web多行消息逐行发送的问题
问题原因
WhatsApp网页版输入框中,单独按Enter会直接发送消息,要实现输入框内换行需要使用Shift+Enter组合键。你的代码直接将Excel单元格中的换行符(vbLf)通过SendKeys发送,相当于每遇到换行就触发一次发送操作,导致多行消息被拆分成多条发送。
修改方案
将Excel单元格文本中的换行符替换为Selenium的Shift+Enter组合键,这样发送时只会在输入框内换行,不会触发发送,最后再按一次Enter发送完整的多行消息。
修改后的完整代码
Sub WhatsAppMessage() 'Activate Selenuim web driver Dim bot As New WebDriver Dim ks As New Keys Dim mob As String Dim text As String Dim processedText As String '新增变量存储处理后的多行消息 'Init new Chrome Instance & navigate to webwhatsapp bot.Start "Chrome", "https://web.whatsapp.com/" bot.Get "/" 'Ask user to scan the QR code. Once Logged in, continue with the macro 'MsgBox "Please Scan QR code, After you are Logged in, please confirm this message box by clicking OK" 'Determine number of messages by identifying the number of last rows in column A LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Search mobile number / name, Press enter, paste text into whatsapp, press enter to send message For i = 4 To LastRow 'Get mobile number or name from worksheet mob = Sheets("Data").Cells(i, 1).Value 'Get Message from Worksheet text = Sheets("Data").Cells(2, 1).Value '处理多行消息:将Excel单元格内的换行替换为Shift+Enter(实现输入框内换行) processedText = Replace(text, vbLf, ks.Shift & ks.Enter) 'click in the searchBox bot.FindElementByXPath("//*[@id='side']/div[1]/div/div/div[2]").Click 'wait 500ms bot.Wait (500) 'Insert mobile number or name bot.SendKeys (mob) 'wait 500ms bot.Wait (500) 'press enter to confirm search mobile bot.SendKeys (ks.Enter) 'wait 500ms bot.Wait (500) '发送处理后的多行消息(仅在输入框内换行,不触发发送) bot.SendKeys processedText 'wait 500ms bot.Wait (500) 'press enter to send完整消息 bot.SendKeys (ks.Enter) Next i MsgBox "Done :)" End Sub
关键修改说明
- 新增
processedText变量,用于存储替换换行符后的消息内容 - 使用
Replace(text, vbLf, ks.Shift & ks.Enter)将Excel单元格中的换行(vbLf,对应Excel里的Alt+Enter)替换为WhatsApp输入框支持的换行组合键 - 发送
processedText而非原text,确保输入框内正确换行 - 最后一次
SendKeys(ks.Enter)负责发送完整的多行消息
内容的提问来源于stack exchange,提问作者Manojkumar Dalal
相关产品推荐
相关产品推荐

