3

VBAユーザーではない他の人が使用するVBAマクロを作成しています。したがって、コードにシステムを埋め込み、コードがエラーをスローすると、マクロのユーザーのOutlookアカウントから自動的に電子メールを送信します。これはVBAで可能でしょうか?また、ユーザーは自分のアカウントへの管理者アクセス権を持っていませんが、これにより問題が発生しますか?よろしくお願いします!

編集-これが可能であり、同じためのvbaコードもあることがわかりました(以下を参照)。ただし、メールを自動送信しようとするとポップアップする「セキュリティ警告ボックス」をなくすことはできますか?また、メールと一緒にエラーファイルを添付したいと思います。私がこれについていくらかの助けを得るならば、それは素晴らしいでしょう、ありがとう!

4

1 に答える 1

4

これを試して。未テスト

Option Explicit

Sub Sample()
    On Error GoTo Whoa

    '
    '~~> Rest of the Code
    '

    Exit Sub
 Whoa:
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "abc@abc.com"
        .Subject = "Error Occured - Error Number " & Err.Number
        .Body = Err.Description

        .Display '~~> Change this to .Send for sending the email
    End With

    Set OutApp = Nothing: Set OutMail = Nothing
End Sub

ファローアップ

マクロを含むExcelファイルを添付する方法はありますか? これを反映するために、メインの質問も編集します。– hardikudeshi 5 分前

これを試して。

Option Explicit

Private Declare Function GetTempPath _
Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

Private Const MAX_PATH As Long = 260

Sub Sample()
    Dim OutApp As Object, OutMail As Object
    Dim wb As Workbook

    On Error GoTo Whoa

    '
    '~~> Rest of the Code
    '

    Exit Sub
 Whoa:
    Set wb = ThisWorkbook

    Application.DisplayAlerts = False
    wb.SaveAs TempPath & "ErroringFile.xls", FileFormat:= _
    xlNormal
    Application.DisplayAlerts = True

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "abc@abc.com"
        .Subject = "Error Occured - Error Number " & Err.Number
        .Body = Err.Description
        .Attachments.Add TempPath & "ErroringFile.xls"

        .Display '~~> Chnage this to .Send for sending the email
    End With

    Set OutApp = Nothing: Set OutMail = Nothing
End Sub

Function TempPath() As String
    TempPath = String$(MAX_PATH, Chr$(0))
    GetTempPath MAX_PATH, TempPath
    TempPath = Replace(TempPath, Chr$(0), "")
End Function
于 2012-05-16T16:47:19.053 に答える