2011-07-31 28 views
3

我想通過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)不工作...

+0

您是否檢查過生成的Word文檔的字體和語言設置實際上是否可以支持您需要的字符?將光標置於不良文本的中間,然後嘗試手動輸入。 – Morbo

+0

是的,當我將文本作爲CF_TEXT放入剪貼板或使用粘貼作爲明文時,字符也可以,只有當粘貼爲HTML時出現問題 – Pax0r

回答

0

您可以使用

Sub OpenHtml() 
'officevb.com 

Dim wd As Word.Application 
Dim doc As Word.Document 

Set wd = Application 

Set doc = wd.Documents.Open("http://www.google.com.br") 

doc.SaveAs "G:\page.docx", wdFormatDocument 

End Sub 

這樣你就不需要複製內容。

[]的

相關問題