我在Access 2007数据库中有备注字段,这些备注字段设置为富文本 - 无论是在字段还是在表单上 - 我需要将这些备注到Word并保留格式。我已经看到StackOverflow上的各种解决方案建议保存到文件(这没有格式化文本)和使用IE(错误与ExecCommand“复制”),我发现适用于大多数情况的解决方案是使用剪贴板,但我不能让它适用于所有类型的格式。
更多细节:我使用AdoDB从Word连接数据库,将数据读入数组。从那里将数据复制到剪贴板然后我使用Pastespecial - 请参阅Microsoft支持解决方案http://support2.microsoft.com/default.aspx?scid=kb;en-us;274326
连接到Access的代码在这里(但我相信这是非常标准的):
Dim cn As Object
Dim rs As Object
Dim strCon As String
'define connection
Set cn = CreateObject("ADODB.Connection")
'connect string for Access - no password
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDataBaseFilePath & ";Persist Security Info=False;"
'open connection
cn.Open strCon
'get recordset
Set rs = cn.Execute(strSQL)
'load data into array
LoadDataFromDatabase = rs.GetRows
Pastespecial文本到Word的代码在这里:
PutHTMLClipboard CStr(varData)
rge.PasteSpecial datatype:=WdPasteDataType.wdPasteHTML
' PutHTMLClipboard是Microsoft例程,vardata被定义为变体并保存Access中一个富文本字段的数据。
使用这种方法我得到一些异常:
包含自定义项目符号的文本(例如在我的情况下'>'而不是标准点)会变为奇怪的字符
带下划线的文本格式正确,但如果文本为粗体+下划线,则只设置粗体格式。粗体+彩色字体可以正常工作。
如果我手动突出显示Access窗体中的文本并将其直接复制并粘贴到Word中,则所有格式都会完美保留。