【发布时间】:2016-11-07 14:20:41
【问题描述】:
我想做的事
我有一个 Access 数据库( C:\Users\289894\Desktop\Database1.accdb ) [Table1] 的字段之一是 [Memo]。
该字段属于Memo 数据类型,文本格式设置为rich text。
例如,它可以将一些记录保存为 Bold,而将一些记录保存为 Italics。
我想从一个 excel 文件打开到这个 Access 数据库的连接,以便读/写这个富文本字段。
我使用的代码如下:
Dim datab As Database
Dim rs As Recordset
Dim path As String
path = "C:\Users\289894\Desktop\Database1.accdb"
Set datab = OpenDatabase(path)
Set rs = datab.OpenRecordset("SELECT * FROM [Table1]")
Debug.Print rs!Memo
Range("A1") = rs!Memo
我的问题
这段代码可以很好地打开一个连接并读取普通文本字段,但富文本的行为方式令人惊讶(对我来说)。访问中的原始文本是“aaa”。那是粗体字的“aaa”。
运行代码后,debug.print 和 Range("A1") 都写入了<div><strong>aaa</strong></div>。
如何更改我的代码以将格式也发送到 Excel?我想在单元格 A1 中用粗体字写出“aaa”,就像在 Access 中一样。
编辑:解决方法 这解决了问题提出的直接问题,而没有真正回答问题本身。它使用 Internet Explorer 将文本粘贴回为富文本,不带标签。
Sub Sample()
Dim Ie As Object
Dim rng As Range
Set rng = Feuil1.Range("A1")
Set Ie = CreateObject("InternetExplorer.Application")
With Ie
.Visible = False
.Navigate "about:blank"
.Document.body.InnerHTML = rng.Value
.ExecWB 17, 0
'Select all contents in browser
.ExecWB 12, 2
'Copy them
ActiveSheet.Paste Destination:=rng
.Quit
End With
End Sub
【问题讨论】:
-
这是一个有趣的问题。在设置或用户使用不同的导出方法方面,我没有直接的解决方案,但是您可以使用的一个技巧是在导入后循环行集并删除
html标记并使单元格变为粗体或斜体,具体取决于标签上。而且标题似乎与问题无关。 -
@ScottHoltzman 很好理解标题,我不确定那里发生了什么。至于粘贴为 HTML,我想过,但我找到的最佳答案是 stackoverflow.com/questions/9999713/…,它给我抛出了一个错误(编辑:它不再适用于较新的 IE 版本)。
-
您是否从您链接的问题中尝试过这个答案? stackoverflow.com/a/14951531/3820271
-
是的,我的列表中也没有所需的库,并且此代码应该在多台机器上运行,因此导入库并不是一个真正的选择。
-
我相当肯定每台 Windows 机器都有 FM20.dll,但这没关系 - 还有其他方法可以将字符串放入剪贴板,例如access.mvps.org/access/api/api0049.htm
标签: excel ms-access dao rtf vba