2017-09-04 11 views
1

私は情報を入力するために使用する新しいExcelドキュメントを開発し、その情報を使用してOFTテンプレートから電子メールを生成します。基本的に、VBAはOFT内の特定の文字列を探し、それをセルまたはActiveXのテキストボックスの内容で置き換えます。たとえば:リッチテキスト形式を有効にして書式設定を続ける

セル参照:

.HTMLBody = Replace(.HTMLBody, "<< summary >>", Worksheets("Sheet1").Range("H3")) 

ActiveXのテキストボックスの参照:

.HTMLBody = Replace(.HTMLBody, "<< previous-updates >>", ActiveSheet.OLEObjects("PreviousUpdates").Object.Text) 

私がいる問題は、 "PreviousUpdates" テキストボックス内のテキストの書式です。 HTML内でテキストを書式設定でき、OFTテンプレートに正しくインポートされます。しかし、私の同僚の多くはHTMLを知らないので、テキストをそのようにフォーマットすることはできません。その点を念頭に置いて、私の質問は2つあります。

  1. 「以前の更新」テキストボックスでリッチテキストの書式設定を有効にするにはどうすればよいですか?
  2. OFTテンプレートに「エクスポート」されたときに、このフォーマットが維持されるようにするにはどうすればよいですか?任意のヘルプについては、

TIA

+0

ちょっと考えて、テキストボックスからテキストをセルにコピーし、テキストをフォーマットして置き換えて使用することはできませんか?そういう意味で、あなたは2つの異なるステートメントを入れ替えても必要ない。ちょっと考えたよ – Zac

+0

うん、それは決して考えなかった。それは可能性もありますが、ユーザーのために簡単に作成できるようにして、XLSと同じように見えるようにすることです。 私は確かに短期的な回避策として試してみましょう。ありがとう。 – Kev

+0

私は隠しセルでそれを持っていました。つまり、ユーザーは賢明でないかもしれません。あるいは、セルH3でそれをコピーすることもできます。 – Zac

答えて

0

私は最初の質問に対する修正を見つけられませんでしたが、私はZacが提供したフィードバックに基づいて回避策を考え出しました。私はちょっと彼のアイデアを取り、それと走った。誰かが同じ問題を抱えている場合に備えて、回避策を投稿すると思います。

私がしたことは、HTMLでテキストをフォーマットし、HTML電子メールテンプレートを作成し、HTMLタグを削除して、テキストがExcelで正しくフォーマットされるようにすることでした。ここに私のコードの例は次のとおりです。

' Add HTML formatting to text updates so it displays correctly in the email. 
PreviousUpdates.Text = Replace(PreviousUpdates, vbCrLf, "<br>") 
LatestUpdate.Text = Replace(LatestUpdate, "-", "<li>") 
LatestUpdate.Text = Replace(LatestUpdate, vbCrLf, "<br>") 

' Populate the HTML email template. 
.Subject = Replace(.Subject, "<<REF>>", Worksheets("Sheet1").Range("C3")) 
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; summary &gt;&gt;", Summary.Text) 
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; latest-update &gt;&gt;", LatestUpdate.Text) 
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; previous-updates &gt;&gt;", PreviousUpdates.Text) 
.Display 

' Remove HTML formatting from text updates so it displays correctly in Excel. 
PreviousUpdates.Text = Replace(PreviousUpdates, "<br>", vbCrLf) 
LatestUpdate.Text = Replace(LatestUpdate, "<li>", "-") 
LatestUpdate.Text = Replace(LatestUpdate, "<br>", vbCrLf) 

それでは、このコードはHTMLの改行とExcelのキャリッジリターン(のvbCrLf)を交換されてやっている(< BR>)。ダッシュを探して、それを箇条書きリストのHTMLタグに置き換えます。

電子メールに入力すると、Excelでテキストが正しく表示されるようにHTML書式が削除されます。

これは完璧ではありませんが、機能し、人々が使用するのは簡単です。

関連する問題