1

Stackoverflow の皆様、

すべての受信メールの段落記号 (少なくとも Outlook の [検索と置換] では ^pi を信じています) を手動の改行 (^l)に置き換えたいと思います。
Google で解決策を見つけることができませんでしたが、検索が間違っている可能性があります。

すべての受信メールのルールとして、次のコードを使用しています:
(参考までに、このコードはテキストで問題なく動作します)

Sub testing(MyMail As MailItem)
 MyMail.HTMLBody = Replace(MyMail.HTMLBody, "example", "changedtext")
 MyMail.Save
End Sub

今、2行目を次のように変更しようとしました:

MyMail.HTMLBody = Replace(MyMail.HTMLBody, "^p", "^l")

MyMail.HTMLBody = Replace(MyMail.HTMLBody, "chr(13)", "chr(10)")

しかし、これらはうまくいかないようでした。

残念ながら、私は VBA コーディングにあまり詳しくありません。
chr() を使用する必要があると言われましたが、その方法についての手がかりがありません。


背景情報:
私は 2 つのルールを使用しています。1 つはすべての ^p を ^l で変更するルールで、もう 1 つは電子メールを HTML からプレーン テキストに変換するルールです。
最初に ^p を ^l で変更せずに変換すると、これらすべての余分な空の行が含まれます。

例:
HTMLの例 & 平文に変換した場合 これを手伝ってくれる人はいますか?
とても感謝しております!

よろしく、

クリス

4

1 に答える 1

1

いくつかの方法がありますが、すべて同じ副作用があります。ユーザーが SHIFT + ENTER を 2 回押すと、改行も 1 行になります。

解決策 1: '2 つの改行を 1 つの改行に置き換える

'vbCrLf is actually Chr(13) & Chr(10)

mail.HTMLBody = Replace(mail.HTMLBody, vbCrLf & vbCrLf, vbCrLf)

解決策 2: '余分な改行を "" に置き換えると、最後に余分な空白のリンクができます

tmp = Split(mail.HTMLBody, vbCrLf)
For Each Line In tmp
    If Line <> "" Then
        newBody = newBody  & Line & vbCrLf
    End If
Next
mail.HTMLBody = newBody
于 2012-12-20T05:42:38.073 に答える