使用Gmail的Excel电子邮件

我试图保存工作簿后自动生成电子邮件。 我不想在电子邮件中发送工作簿,只是通过电子邮件通知一个人名单,说他们有一个新的条目,所以他们实际上必须打开它并作出回应(如果我可以把一个链接的位置将工作的电子表格)。 此外,工作簿是“共享”的,所以多人可以一次编辑,所以我不认为它会保持“共享”,并继续更新,如果它是从电子邮件下载。 大约25人可以访问此电子表格,任何人都可以input/编辑条目。 最终,我只希望它发送一个电子邮件,只有当数据input/编辑在一个特定的列,然后保存。

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

有谁知道任何代码来做到这一点?

我是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 

我得到这个错误

在这里输入图像描述

那么我想,如果我把variables之外的subs,然后调用第一个子中的第二个子,以及添加.fieldsconfiguration(感谢蒂姆!).update,它的工作原理:

 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 

我没有看到你.updateconfiguration。 尝试这个:

  .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 

简单的Sendkeys解决scheme。 您必须login到Gmail

 Sub ActivateGmail() MessageText = Range("Email!StockOptionAnalysis") Handle = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" RetVal = Shell(Handle, 1) '     Open Application.Wait Now + TimeValue("00:00:03") SendKeys ("https://mail.google.com/mail/u/0/#inbox?compose=new"), True SendKeys ("{ENTER}"), True Application.Wait Now + TimeValue("00:00:03") SendKeys ("""boss"" <wife@gmail.com>"), True SendKeys ("{ENTER}"), True Application.Wait Now + TimeValue("00:00:03") SendKeys ("{TAB}"), True SendKeys ("Optigon"), True Application.Wait Now + TimeValue("00:00:03") SendKeys ("{TAB}"), True SendKeys (MessageText), True Application.Wait Now + TimeValue("00:00:03") SendKeys ("{TAB},{ENTER}"), True Application.Wait Now + TimeValue("00:00:03") SendKeys ("%{F4}"), True ' Adjust the wait time as needed End Sub 
    Interesting Posts