2017-08-11 17 views
0

私は次のスクリプトをExcelに持っていますが、電子メールを送信する必要があります(受信者はB24にあるはずです)。しかし、エラーメッセージは表示されませんが、メールは配信されません。どんな助けでも本当に感謝しています。なぜこのVBスクリプトは電子メールを送信しないのですか?

誰かが私に何が間違っているのか、ここで何が間違っていたのでしょうか?

Sub Email2() 
    Dim sh As Worksheet 
    Dim wb As Workbook 
    Dim FileExtStr As String 
    Dim FileFormatNum As Long 
    Dim TempFilePath As String 
    Dim TempFileName As String 
    Dim OutApp As Object 
    Dim OutMail As Object 

    TempFilePath = Environ$("temp") & "\" 

    If Val(Application.Version) < 12 Then 
     FileExtStr = ".xls": FileFormatNum = -4143 
    Else 
     FileExtStr = ".xlsm": FileFormatNum = 52 
    End If 

    With Application 
     .ScreenUpdating = False 
     .EnableEvents = False 
    End With 

    Set OutApp = CreateObject("Outlook.Application") 

    For Each sh In ThisWorkbook.Worksheets 
     If sh.Range("B28").Value Like "?*@?*.?*" Then 

      sh.Copy 
      Set wb = ActiveWorkbook 

      TempFileName = "Performance " & sh.Name & " date " & Format(Now, "dd-mmm-yy h-mm-ss") 

      Set OutMail = OutApp.CreateItem(0) 

      With wb 
       .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum 

       On Error Resume Next 
       With OutMail 
        .TO = sh.Range("B24").Value 
        .CC = "" 
        .BCC = "" 
        .Subject = "This is the subject" 
        .Body = "Hello," 
        .Attachments.Add wb.FullName 
        .Send 
       End With 
       On Error GoTo 0 

       .Close savechanges:=False 
      End With 

      Set OutMail = Nothing 

      Kill TempFilePath & TempFileName & FileExtStr 

     End If 
    Next sh 

    Set OutApp = Nothing 

    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
    End With 
End Sub 
+2

エラーが発生したかどうかを確認できるように、 'On Error Resume Next'を付けずに実行してみましたか?コードを踏んで、 '.Send'に到達したかどうかを確認しましたか? – YowE3K

+0

はい、試しましたが、まだエラーメッセージはありません – mabanger

+0

'.Send'を' .Display'に変更してみてください(私は正しいと思いますが、Outlook VBAを使用したことはありません)ので、メッセージを送信する代わりに表示します。それは表示されますか? – YowE3K

答えて

1

は、Excel 2010

に私のために働いた私が見ることができるすべては、あなたが「B28」の値は、電子メールアドレスのように見えるかどうかを確認し、その後に電子メールを送信することで提供されているコード"B24"のアドレス。それは問題ですか?

私のテストでは、私は "B28"と "B24"の両方に私の住所を入れました。

+0

LOL - 私はちょうどそれについてのコメントを投稿しようとしていました! (私はそれがほぼ確実に理由であると仮定して+1すると思います。) – YowE3K

関連する問題