2017-09-04 43 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,所以無法以這種方式格式化文本。考慮到這一點,我的問題有兩個:

  1. 如何在「PreviousUpdates」文本框中啓用富文本格式?
  2. 如何確保在「導出」OFT模板時保持此格式?

TIA任何幫助。

+0

只是一個想法,你能不能將文本從你的文本框複製到一個單元格中,格式化文本,然後在你的替換中使用它?這樣,你不需要2個不同的陳述來取代..只是一個想法 – Zac

+0

嗯,我從來沒有想到這一點。這可能是一種可能性,但想法是爲用戶填充容易,因此在XLS中看起來與在電子郵件中看起來一樣。 雖然我肯定會給出一個嘗試作爲短期解決方法。謝謝。 – Kev

+0

我會把它放在一個隱藏的單元格中,用戶不會更聰明,或者你可以將它複製到單元格'H3'中,因爲這是一個用戶可能在表單中填充的單元格 – Zac

回答

0

儘管我還沒有找到解決我最初的問題,但我設法根據Zac提供的反饋提出了一個解決方法。我有點把他的想法和跑了。以爲我會發布我的解決方法,以防任何人遇到同樣的問題。

因此,我所做的是使用Replace語句來格式化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標籤取而代之。

一旦填充到電子郵件中,它將刪除HTML格式,以便文本在Excel中正確顯示。

這不是完美的,但它的工作原理,人們使用它很簡單。