私は次のスクリプトを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
エラーが発生したかどうかを確認できるように、 'On Error Resume Next'を付けずに実行してみましたか?コードを踏んで、 '.Send'に到達したかどうかを確認しましたか? – YowE3K
はい、試しましたが、まだエラーメッセージはありません – mabanger
'.Send'を' .Display'に変更してみてください(私は正しいと思いますが、Outlook VBAを使用したことはありません)ので、メッセージを送信する代わりに表示します。それは表示されますか? – YowE3K