gpt4 book ai didi

excel - 使用 Gmail 从 Excel 发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 23:56:53 24 4
gpt4 key购买 nike

我正在尝试在保存工作簿后自动生成电子邮件。我不想在电子邮件中发送工作簿,只是向一组人员发送电子邮件通知,告知其中有一个新条目,因此他们实际上必须打开它并做出响应(如果我可以添加指向该条目位置的链接)可以使用的电子表格)。此外,该工作簿是“共享”的,因此多个人可以同时编辑它,因此我认为如果从电子邮件下载它,它不会保持“共享”状态并继续更新。大约有 25 人有权访问此电子表格,任何人都可以输入/编辑条目。最终,我希望它仅在特定列中输入/编辑数据然后保存时才发送电子邮件。

我的代理机构使用 Gmail,但我们的电子邮件地址中没有 @gmail.com。相反,我们以某种方式通过 gmail 使用我们的 .gov 电子邮件地址。我不确定这是否相关,但我想我会提到它。我搜索了几个在线论坛,但似乎找不到任何东西。

有谁知道有什么代码可以做到这一点吗?

我是 VBA 新手,我可以使用电子邮件部分,但我希望在保存工作簿时发送电子邮件。这是我当前使用的代码:

Sub CDO_Mail_Small_Text()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
' Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx@xxx.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxxxxx"
.Update 'Let CDO know we have change the default configuration for this message
End With




strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"

With iMsg
Set .Configuration = iConf
.To = "xxx@xxx.com"
.CC = ""
.BCC = ""
.From = """name"" <xxx@xxx.com>"
.Subject = "test"
.TextBody = strbody
.Send
End With

End Sub

我收到此错误

enter image description here

最佳答案

好吧,我发现如果我将变量放在子函数之外,然后在第一个子函数中调用第二个子函数,并在 .update 中添加 .fields 配置(感谢蒂姆!),它就可以工作:

Dim iMsg As Object
Dim iConf As Object
Dim strbody As String

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Call CDO_Mail_Small_Text
End Sub

Private Sub CDO_Mail_Small_Text()

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx@xxx.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxxxxx"
.Update 'Let CDO know we have changed the default configuration for this message
End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"

With iMsg
Set .Configuration = iConf
.To = "xxx@xxx.com"
.CC = ""
.BCC = ""
.From = """name"" <xxx@xxx.com>"
.Subject = "test"
.TextBody = strbody
.Send
End With

End Sub

关于excel - 使用 Gmail 从 Excel 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com