如何通过Excel VBA发送带单元格截图的WhatsApp图片消息
实现方案
你可以通过「Excel指定区域截图导出为临时本地图片→Selenium调用WhatsApp图片上传功能发送」的逻辑实现需求,修改后的完整可运行代码如下:
Sub WebWhatsApp_SendImage() Dim bot As New WebDriver Dim ks As New Keys Dim screenshotPath As String Dim rng As Range Dim chrt As ChartObject ' ========== 配置部分 ========== ' 定义要截图的单元格区域 Set rng = Sheets(1).Range("A1:D5") ' 定义临时截图保存路径(默认保存在系统临时目录) screenshotPath = Environ("TEMP") & "\excel_temp_screenshot.png" ' ========== 第一步:导出单元格区域为本地图片 ========== ' 复制区域为图片 rng.CopyPicture xlScreen, xlPicture ' 创建临时Chart对象用于保存图片 Set chrt = Sheets(1).ChartObjects.Add(Left:=0, Top:=0, Width:=rng.Width, Height:=rng.Height) chrt.Activate ' 关闭Chart边框避免多余样式 chrt.Chart.ChartArea.Border.LineStyle = xlLineStyleNone ' 粘贴图片到Chart并导出 ActiveChart.Paste chrt.Chart.Export Filename:=screenshotPath, FilterName:="PNG" ' 删除临时Chart对象 chrt.Delete ' ========== 原有WhatsApp登录、搜索联系人逻辑 ========== bot.Start "chrome", "https://web.whatsapp.com/" bot.Get "/" MsgBox "请扫码登录后点击确定" ' 读取搜索的联系人/手机号 searchtext = Sheets(1).Range("A2").Value ' 读取要发送的文本内容(不需要可以删掉) textmessage = "这是随图片发送的文本内容" ' 点击搜索框 bot.FindElementByXPath("//*[@id='side']/div[1]/div/label/div/div[2]").Click bot.Wait 500 ' 输入搜索内容 bot.SendKeys searchtext bot.Wait 500 ' 进入聊天窗口 bot.SendKeys ks.Enter bot.Wait 500 ' ========== 第二步:发送图片 ========== ' 点击附件(回形针)按钮 bot.FindElementByXPath("//div[@title='附件']").Click bot.Wait 500 ' 定位图片上传的input元素,传入本地截图路径 bot.FindElementByXPath("//input[@accept='image/*,video/mp4,video/3gpp,video/quicktime']").SendKeys screenshotPath bot.Wait 1000 ' 如果需要同时发送文本,可以在这里输入文本内容 If textmessage <> "" Then bot.SendKeys textmessage bot.Wait 500 End If ' 按回车发送 bot.SendKeys ks.Enter bot.Wait 500 ' 可选:删除临时截图文件 Kill screenshotPath Stop End Sub
注意事项
- 代码中Web WhatsApp元素的XPath是基于当前版本编写的,如果后续平台前端更新导致定位失败,可按F12打开浏览器开发者工具重新抓取对应元素的XPath替换即可
- 可自行修改
Set rng = Sheets(1).Range("A1:D5")中的单元格范围适配你的截图需求 - 无需随图片发送文本的话,可直接删除
textmessage相关代码段 - 确保你使用的Chrome Driver版本与本地安装的Chrome浏览器版本一致,避免启动报错
内容的提问来源于stack exchange,提问作者Fighter Jet
相关产品推荐
相关产品推荐

