Я хотел бы вставить некоторые данные в формате HTML в Word через VBA.Данные HTML получаются из MS XML путем преобразования документа XML с помощью данного xsl в соответствующий HTML, и эти преобразованные данные HTML, которые я хочу поместить в Word, сохраняют форматирование HTML.Я обнаружил, что единственный способ передать данные HTML в 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) и наоборот (в случае, когда буфер обмена использует ASCII, помимо того, что MS пишет в MSDN), но безуспешно.Например, использование StrConv (html, vbUnicode) из VBA исказило все HTML-теги и все еще плохо печатало польские символы.
Я получаю 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 IS ANCII.Кто-нибудь знает лучшую функцию для преобразования ASCII в UTF?Встроенный StrConv (html, vbUnicode) не работает хорошо ...
РЕДАКТИРОВАТЬ: после исследования я уверен - строка, которую я получил от transformNode - ASCII (как в формате буфера обмена CF_TEXT), а CF_HTML требует UTF-8 кодировка.Как я мог преобразовать эту строку в UTF-8?Встроенный StrConv (string, vUnicode) не работает ...