スプレッドシートへの変更をユーザーに更新するメールを送信しようとしています。ドキュメントが保存されると、変更のリストを含む電子メールが自動的に送信されるようにしようとしています。
ドキュメントを保存するときに電子メールを自動化できるかどうか知っている人はいますか?
ここでこのコードを使用できます。Chip Pearson ほど派手ではありませんが、理解しやすいです。この方法は、outlook の使用にも依存しています。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Outlook As Object, EMail As Object
Set Outlook = CreateObject("Outlook.Application")
Set EMail = Outlook.CreateItem(0)
With EMail
.To = "EmailAddress1@Server.com; Email2@aol.com"
.CC = ""
.BCC = ""
.Subject = "Put your subject here"
.Body = "Add you E-Mail Message Here"
.Attachments.Add ActiveWorkbook.FullName ' To add active Workbook as attachment
.Attachments.Add "C:\Test.xlsx" ' To add other files just use path, Excel files, pictures, documents pdf's ect.
.Display 'or use .Send to skip preview
End With
Set EMail = Nothing
Set Outlook = Nothing
End Sub
これを設定するには、完全なガイドは次のとおりです。
ALT
最初に+を使用して VBA ウィンドウを開きF11
、右側のウィンドウで [Worbook] を選択してから、ドロップダウンから [workbook] を選択します。
次に、右側のドロップダウンから [BeforeSave] を選択します。
次に、そこにコードを貼り付けます。
これで終了する必要があります:
そのはず。コードを Workbook_BeforeSave イベントに配置する必要があるため、ワークブックが保存されたときにトリガーされます。
Chip Pearson には、VBA からの電子メールの送信に関する優れた記事があります。
ThisWorkbook コード セクションにコードを配置する必要があります。 Workbook_BeforeSave
ワークブックが保存される前にイベントがトリガーされます。以下のコードで、それをどのように達成できるかがわかると思います。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Identify here list of changes
' You can pass as a string to SendMail
Dim strChanges As String
strChanges = "test"
SendMail strChanges
End Sub
Sub SendMail(msg As String)
Dim iMsg As Object
Dim iConf As Object
Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1
Set Flds = iConf.Fields
'Configure the below details
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "test-002"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
With iMsg
Set .Configuration = iConf
.To = "test@gmail.com"
.From = "test@gmail.com"
.Subject = "msg" & " " & Date & " " & Time
.TextBody = msg
.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
End Sub