1

エクセルでメールを作成しています。メールが作成されたら、上部に 1 つまたは 2 つのコメントを追加する必要があります。フォント スタイルを設定する方法を理解しましたが、Outlook は本当に望んでいないキャリッジ リターンに 2 行のスペースを追加しています。どうすればこれを変更できますか?

以下のコード:

Sub CreateDailyEmail()

    Dim oApp As Object
    Dim oMail As Object

    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(0)

    With oMail
        .To = Range("EMAIL_TO")
        .Cc = Range("EMAIL_CC")
        .Subject = Range("EMAIL_SUBJECT")
        .Attachments.Add (Range("PATH"))
        .HTMLBody = "<p style=""font-family: Calibri; font-size: 14px; color: #00f; line-height: 1;""><br /></p>" & RangetoHTML(ActiveWorkbook.Worksheets("Daily").Range("B6:H65"))
        .Display
    End With

    Set oMail = Nothing
    Set oApp = Nothing

End Sub
4

2 に答える 2

2

Excel からの送信と電子メールに優れた Ron De Bruin のコードを使用しているようです (したがって、RangetoHTML() 式)。

http://www.rondebruin.nl/win/s1/outlook/mail.htmにあるこの同じコードを使用しています。

.HTMLBody で段落 HTML タグを使用する代わりに、body タグを使用し、行の高さを 1 に設定します。次に、RangetoHTML が必要な範囲を返すと、テキストから 1 つのスペースで区切られます。これにより、コードが作成されます....

Sub CreateDailyEmail()

Dim oApp As Object
Dim oMail As Object

Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)

With oMail
    .To = Range("EMAIL_TO")
    .Cc = Range("EMAIL_CC")
    .Subject = Range("EMAIL_SUBJECT")
    .Attachments.Add (Range("PATH"))
    .HTMLBody = "<body style=""font-family: Calibri; font-size: 14px; color: #00f; line-height: 1;""><br />" & RangetoHTML(ActiveWorkbook.Worksheets("Daily").Range("B6:H65")) & "</body" & .HTMLBody
    .Display
End With

Set oMail = Nothing
Set oApp = Nothing

End Sub
于 2016-04-08T14:55:35.907 に答える
0

改行が Excel シートのセルで発生しているのか、Outlook の html でのみ発生しているのかわからないため、あなたが求めていることを理解しているかどうかは完全にはわかりませんが、私の心には 2 つのアプローチがあります。

セル内のキャリッジ リターンと改行を置き換えることができます (http://stackoverflow.com/questions/2321078/how-can-i-remove-blank-line-breaks-from-an-excel-cell-with-vb- or-a-formula ) 間隔の問題に対処します。

Substitute(Substitute(A1, CHAR(10), ""), CHAR(13), "")

ドキュメントの html 部分で発生している場合は、outlook 固有の問題です。設定を使用した html の例は問題なく動作します。

<!DOCTYPE html>

<html>

<head>

<meta name="description" content="A Jack Orange 

Lantern Example" />

<style type="text/css">

p
{
font-family: "Calibri"; 
font-size: 20px;
color: #00f;
line-height: 1;
} 

</style>


</head>

<title> What's Up? </title>

<body>



<p> This is totally a paragraph </p>

<p> this is totally a paragraph <br /> + a line 

break </p>

<p> this is totally a paragraph with a line break 

afterwards <br /> </p>

<p> Totally... yeah. <br /> </p>

</body>

</html>

Outlook の場合、Replace 関数を使用してキャリッジ リターンを置き換えることができるはずです。

stringNewText = Replace(stringOldText, vbCr, "")

または、おそらく:

stringNewText = Replace(stringOldText, vbCr, <br>)

または、代わりに:

stringNewText = Replace(stringOldText, vbCr, vbCrLf)

MSDNのドキュメントでは、アイテム ボディの操作に関する Microsoft チュートリアルの置換関数について直接説明しています。

vbaexpress のチュートリアルでは、少なくとも周辺的にこの問題に対処しているように見え、さらに明確にすることができます: http://www.vbaexpress.com/forum/showthread.php?t=39348

于 2012-07-31T15:20:36.727 に答える