excel - 使用工作表列中的地址发送电子邮件

标签 excel vba outlook

我有一张名为“测试”的表格,其中 A 列是电子邮件地址列表。
我想向所有地址发送电子邮件。

Sub EmailSend()
    
    Dim objOutlook As Object
    Dim objMail As Object
    Dim i As Integer
    
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    
    For i = 1 To 10
        With objMail
           .to = Sheets("Test").Range("A" & i).Value
           .Subject = "hi"
           .body = _ 
              "Hi " & Sheets("Test").Range("B" & i) & Sheets("links").Range("G" & 1)
           .send
        End With
    Next i
    
End Sub
宏向 A1 中的地址发送电子邮件,然后出现错误

element was moved or deleted.


出现在行中
.to = Sheets("Test").Range("A" & i).Value

最佳答案

我猜您尝试发送的第二行可能有错误。因此,使用下面的代码并检查它在立即窗口中显示的内容。

更新:
我添加了 CreateItem For 中的行循环并为每封邮件重置它。可能是错误消息提示的邮件项目。

Sub EmailSend()

Dim objOutlook As Object
Dim objMail As Object
Dim i As Integer

Set objOutlook = CreateObject("Outlook.Application")

For i = 1 To 10
Set objMail = objOutlook.CreateItem(0)

With objMail
    Debug.Print Sheets("Test").Range("A" & i).Value
   .to = Sheets("Test").Range("A" & i).Value
   .Subject = "hi"
   .body = _
      "Hi " & Sheets("Test").Range("B" & i) & Sheets("links").Range("G" & 1)
   .display
   '.send
End With
Set objMail = Nothing

Next i

End Sub

关于excel - 使用工作表列中的地址发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56666083/

相关文章:

excel - 用 vba 删除最后 4 个字符并替换同一单元格中的新单词/数字

excel - 是否可以计算整行的总和?

excel - 如何仅在存在时禁用数据透视项目?

vb6 - 为 MAPI-MIME 转换创建 IDL

java - JXLS无法正确读取长度大于10的数字

vba - 数组到 Excel 范围

excel - 无法更改 Excel VBA IP 列表 ping 中的 ping 超时

css - Windows 中 Outlook 电子邮件中的响应式填充

css - 并排表格在 Outlook 中不起作用

excel - VBA 简单 Vlookup 到关闭的工作簿 - 语法错误