我想通過VBA將一些HTML格式的數據粘貼到Word。 HTML數據是從MS XML獲得的,通過將xml文檔通過給定的xsl轉換爲合適的html,並將這個轉換後的html數據轉換爲保留HTML格式的Word。 我發現只有將Word數據提供給Word的方法是將它們放入剪貼板。 即時通訊使用此功能:
http://support.microsoft.com/kb/274326
然後使用PasteSpecial我把它放到Word中。一般來說,它的工作原理,但...
問題是與特殊字符(在我的情況下波蘭變音字母)完全畸形。
根據http://msdn.microsoft.com/en-us/library/ms649015%28v=vs.85%29.aspx剪貼板中的HTML格式使用UTF-8進行編碼並在我的XML中使用UTF-8,所以理論上一切都應該沒問題,但它沒有。
我也嘗試過找到一些將ASCII轉換爲UTF的函數(如果由於某種原因,我的字符串是ASCII),反之亦然(如果剪貼板使用的是MSDN除MS之外的ASCII碼)但沒有成功。例如,使用來自VBA的StrConv(html,vbUnicode)格式化所有HTML標籤,並且仍然沒有很好地打印波蘭語字符。
通過VBA和剪貼板複製HTML到Word丟失特殊字符
我得到的HTML數據以這樣一種方式:
Dim xslt As New MSXML2.DOMDocument
xslt.Load (xsltfile)
Dim xmlDoc As New MSXML2.DOMDocument
xmlDoc.load(xmlfile)
html = xmlDoc.transformNode(xslt)
,然後粘貼到Word(使用上面給出的功能)
PutHTMLClipboard html, "", ""
where.Paste
ClearClipboard
編輯:大概文本由xmlDoc中獲得。 transformNode是ANCII。有沒有人知道一些更好的功能將ASCII轉換爲UTF?建立在StrConv(html,vbUnicode)不能正常工作...
編輯:在研究後我確定 - 我從transformNode得到的字符串是ASCII(如CF_TEXT剪貼板格式)和CF_HTML需要UTF-8編碼。我怎樣才能將這個字符串轉換爲UTF-8?內建中StrConv(字符串,vUnicode)不工作...
您是否檢查過生成的Word文檔的字體和語言設置實際上是否可以支持您需要的字符?將光標置於不良文本的中間,然後嘗試手動輸入。 – Morbo
是的,當我將文本作爲CF_TEXT放入剪貼板或使用粘貼作爲明文時,字符也可以,只有當粘貼爲HTML時出現問題 – Pax0r