1

次のコードがあります。私の目標は、テキスト ファイルをテンプレートとして使用して、Excel ドキュメント内のユーザーのリストに自動メールを送信することです。

Set objMessage = CreateObject("CDO.Message") 
Set app = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("F:\Billing_Common\autoemail").Files
  If LCase(fso.GetExtensionName(f)) = "xls" Then
    Set wb = app.Workbooks.Open(f.Path)

set sh = wb.Sheets("Auto Email Script")
row = 2
email = sh.Range("A" & row)
subject = "Billing"
LastRow = sh.UsedRange.Rows.Count

For r = row to LastRow
    If App.WorkSheetFunction.CountA(sh.Rows(r)) <> 0 Then 
    objMessage.Subject = "Billing: Meter Read" 
    objMessage.From = "billing@energia.ie" 
    objMessage.To = email

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim emailText                                   
Set emailText = fso.OpenTextFile("F:\Billing_Common\autoemail\Script\Email.txt", ForReading)                                        
BodyText = emailText.ReadAll

    objMessage.TextBody = emailText

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = CdoSendUsingPort


'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "ADDRESS OF SERVER HERE"

'Server port
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 

objMessage.Configuration.Fields.Update
objMessage.Send

    End if
Next

emailText.Close
Set emailText = Nothing
Set fso = Nothing
wb.Close
End If
Next

objMessage.TextBody で型の不一致を示すエラーがスローされます。誰かが私を助けることができれば、それは大歓迎です!

ありがとう!

4

2 に答える 2

1

インライン画像を送信するには、 のHTMLBody代わりにを作成し、画像とともにTextBodyを追加する必要がありますRelatedBodyPart(こちらを参照)。

Set msg = CreateObject("CDO.Message")
...
msg.HTMLBody = "<html>" & vbLf & _
               "<head><title>Test</title></head>" & vbLf & _
               "<body><p><img src='foo.jpg'></p></body>" & vbLf & _
               "</html>"
msg.AddRelatedBodyPart "C:\path\to\your.jpg", "foo.jpg", 0
于 2013-07-03T10:06:35.437 に答える
0

行の後、ファイルではなく、それBodyText = emailText.ReadAllを割り当てる必要があります(「emailText」は前の行で編集されたものです)。そのため、タイプの不一致について不平を言っています...TextFileOpenfso

したがって、に置き換えるだけobjMessage.TextBody = emailTextobjMessage.TextBody = BodyText動作するはずです...

于 2015-04-17T18:20:16.817 に答える