2017-03-09 45 views
1

スケジュールされたタスクを経由してグループに電子メールを送信するか、少なくとも以前は使用していた他の人が作成したExcelスプレッドシートがあります。それは最近働いていません。現在私はRube Goldberg/Wile E. Coyoteシステム全体を再構築する時間がないので、修正しようとしています。 Excel文書の一つでOutlook電子メールの件名と本文の空白を作成するVBA Excel

何かに私は私の歯をグリット私は「次のエラー履歴書に」非常に多くのを見るたびに、このコードは

Set rng = Nothing 
On Error Resume Next 
Set rng = Sheets("Weight").Range("A2") 
On Error GoTo 0 

If rng Is Nothing Then 
    MsgBox "The selection is not a range or the sheet is protected" & _ 
      vbNewLine & "please correct and try again.", vbOKOnly 
    Exit Sub 
End If 

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

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

On Error Resume Next 
With OutMail 
    .To = "[email protected]" 
    .CC = "" 
    .BCC = "" 
    .Subject = Sheets("Weight").Range("A1") 
    .HTMLBody = Convert.ToString(rng) 
    .Send 
End With 

が存在します。

何が起こっているのは「うまくいく」ことですが、送信するメールは空白です。デバッグでは、件名のコンテンツと本文のコンテンツの両方が存在し、値を持っていることがわかります。私はそれが

OutMail.To = "[email protected]" 
    OutMail.CC = "" 
    OutMail.BCC = "" 
    OutMail.Subject = Sheets("Weight").Range("A1") 
    OutMail.HTMLBody = Convert.ToString(rng) 
    OutMail.Send 

であることを書き直しや送信時にデバッグポイントを投げ、そしてoutmailのプロパティを確認し、対象とのHtmlBodyは値を持っています。私はなぜ彼らが空白の送信後に把握することはできません。

+0

'.Send'の前に' .Save'を追加します。 – Jordan

+0

範囲のデフォルトプロパティに頼らず、必要なプロパティを指定します: 'OutMail.Subject = Sheets(" Weight ")。 ).Value'と 'OutMail.HTMLBody = rng.Value'または' OutMail.HTMLBody = rng.Text' –

+0

奇妙な部分は、まったく同じコードが50の他のスプレッドシートと同じように使用され、それら。 –

答えて

1

他のアプリケーションを自動化している場合は、範囲のデフォルトプロパティに頼ってはいけません。 Value

OutMail.Subject = Sheets("Weight").Range("A1").Value 
OutMail.HTMLBody = rng.Value 

またHTMLBodyためTextプロパティを試してみてください:

OutMail.HTMLBody = rng.Text 

あなたは、あなたがそれを期待するもので、メールのプロパティにStringを割り当てていることを確信することができます。

+0

何らかの理由で、その小さな量のテキストのためのそのスプレッドシートでは、.Valueが必要です。他のものでははるかに複雑ではありません。 –

関連する問題