2017-03-20 15 views
1

Excelを使用して本文としてテキストボックス内のテキストを使用して電子メールを送信します。これはうまくいきますが、メールを送信するときは、テキストのフォントサイズのみをコピーし、色やスタイルはコピーしません。私は多くの研究をしましたが、解決策は見つかりませんでした。 Excelがテキストボックス内のテキストのスタイルとその内容をコピーできるようにするコードはありますか?
strbody = "<BODY style=font-size:11pt;font-family:Calibri>Good Morning;<p>We have completed our main aliasing process for today. All assigned firms are complete. Please feel free to respond with any questions.<p>Thank you.</BODY>"
しかし、私はコードではなく、テキストボックスに身体を書いているので、私はしたい:私はこれは次のようにHTMLで可能です知っているVBA:メールを送信するときにテキストのスタイルを変更します。

Sub SendMail() 
Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem 
Dim strbody As String 

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

strbody = ThisWorkbook.Sheets("Mail").Shapes("txt").DrawingObject.Text 
'I named the textbox "txt" in the worksheet 
'On Error Resume Next 
With OutMail 
    .To = "[email protected]" 
    .CC = "" 
    .BCC = "" 
    .Subject = Cells(3, 2) 
    .Body = strbody 

    .Send 
End With 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 

:ここでメールを送信するコードがあります解決策を見つけることを好む

ありがとうございます。

答えて

2

PasteExcelTableはおそらくあなたが探しているものですが、Outlookが実際にWord文書ライターを使用しているという意味では、もう少し隠されています。 Wordオブジェクト参照を追加する必要があります。

.HTMLbodyまたは.bodyの代わりにライターを使用して挿入するには、残りのコードを変更する必要があります。

インスペクタ/書き込みが機能するためには、ウィンドウを非表示にすることはできないようですが、十分にテストしていないことに注意してください。

Sub SendEmail() 
    Dim OutApp As Outlook.Application 
    Dim OutMail As Outlook.MailItem 
    Dim strbody As String 

    Dim olInsp As Outlook.Inspector 
    Dim document As Word.document 
    Dim oRng As Excel.Range 

    Set OutApp = New Outlook.Application 
    Set OutMail = OutApp.CreateItem(olMailItem) 

    With OutMail 
     .To = "[email protected]" 
     .CC = "" 
     .BCC = "" 
     .Subject = Cells(3, 2) 
     .Display 
     Set olInsp = .GetInspector 

     If olInsp.IsWordMail And olInsp.EditorType = olEditorWord Then 
      Set document = olInsp.WordEditor 
      Set oRng = Range("A1:B2") ' The range you wish to copy into the document 
      oRng.Copy ' Loads info to clipboard 
      ' Write the range into the first paragragh of the word document. 
      document.Paragraphs(1).Range.PasteExcelTable False, False, True 

      ' Example how to write to the end of the email. 
      Dim p As Word.Paragraph 
      Set p = document.Paragraphs.Add 
      p.Range.Text = "test" 
     End If 

    End With 

    Set OutMail = Nothing 
    Set OutApp = Nothing 

End Sub 
+0

ニース代替方法。間違いなく、テキストボックスを使ってHTMLに変換しようとする方が簡単です。私はこの提案が好きです。 –

+0

ありがとうCody G.私は成功すると私が投稿する別の方法を使い始めました。私はすぐ後にあなたのことをテストします。 – Francis

1

まず、私はExcelでこれを行うためのデフォルト/組み込みの方法について知らない。必要なのはExcelセル形式のHTMLコンバータです。

自分で作成することも、オンラインで適切なスクリプトを見つけることだけができます。このようなもの: Macro to Convert Excel Cell to HTML and preserve font formatting

+0

ありがとうございます。私はそれを調べた。私は "テスト"をセルに入れ、マクロを実行する前にそれを選択しました。しかし、奇妙なことに何も起こっていない。 – Francis

+0

これは "コードをコピー&ペースト"するのではなく、どのようにして行うことができるかの提案です。すぐに使えるソリューションはありません。 –

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 15582189) – Tom

関連する問題