0

スプレッドシートへの変更をユーザーに更新するメールを送信しようとしています。ドキュメントが保存されると、変更のリストを含む電子メールが自動的に送信されるようにしようとしています。

ドキュメントを保存するときに電子メールを自動化できるかどうか知っている人はいますか?

4

3 に答える 3

3

ここでこのコードを使用できます。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] を選択します。

保存前

次に、そこにコードを貼り付けます。

これで終了する必要があります:

最後の

于 2013-06-06T14:58:39.997 に答える
1

そのはず。コードを Workbook_BeforeSave イベントに配置する必要があるため、ワークブックが保存されたときにトリガーされます。

Chip Pearson には、VBA からの電子メールの送信に関する優れた記事があります。

于 2013-06-06T14:39:45.727 に答える
1

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
于 2013-06-06T14:42:30.660 に答える