【发布时间】:2016-07-05 19:09:07
【问题描述】:
我有什么
我有一个 Excel 单元格,用一些格式化文本说“A1”。假设文本带有下划线和粗体,并显示“abc”,每个字母都有不同的颜色。
在访问中,我有一个带有备注字段的表格,文本格式设置为富文本。
我想要什么
今天之前,我设法从 Excel 打开记录集,获取带有格式的 Access 表字段的文本,然后将其发送到 Excel 单元格。现在我想做相反的事情,但仍然来自 Excel。
我尝试了什么
当 ID = 4 时,我尝试将 A1 的格式化文本发送到备注字段。发送单元格的值不会保留格式,并将单元格作为对象发送。这是我尝试过的代码:
Sub test2()
Dim datab As Database
Dim rs As Recordset
Dim path As String
Dim str As String
path = "C:\Users\289894\Desktop\Database1.accdb"
Set datab = OpenDatabase(path)
Set rs = datab.OpenRecordset("SELECT * FROM [Table1]")
Do Until rs.EOF
rs.Edit
If rs!ID = 4 Then
rs!Memo = Range("A1")
rs.Update
End If
rs.MoveNext
Loop
rs.Close
End Sub
有没有办法发送文本,以便 Access 以它的格式存储它,而无需手动检查整个字符串的格式,在必要时添加 HTML 标记,然后发送它?我希望不是,并且想知道如何修改我的代码以发送带有文本的格式!
【问题讨论】:
-
我建议您尝试使用二进制数据作为代表备忘录字段的DAO.Field
-
在尝试向 Access 发送信息时如何将其转换为 VBA?我现在正在发送 A1 范围,但默认情况下发送 Range("A1").Value,我认为它是纯文本而不是格式。所以我觉得问题不在于访问端,而在于使用正确的参数来发送。
-
我从来没有处理过文本格式,但克服限制 免费工具 为我们提供是我的一个爱好... 首先:XL 单元格中的数据是否已保存在 HTML 中?你有办法阅读这个 html,比如在 msgbox 中显示它吗?那将是最简单的方法:类似于
rs!Memo = Range("A1").htmlValue(或Cells("A1"))。我会朝那个方向挖掘。 -
其他建议:将
Memo字段更改为binary字段,这样rs!BinaryField = Range("A1")将(可能...)复制bits,而不是文本,并且会(希望如此。 ..) 也复制 html 标签。然后,当html在Access表中时,将Binary数据转换为Memo数据应该更容易。请让我们(我)发布:) -
@marlan 我最终使用宏将 HTML 标记添加到我发送的字符串中。它非常快而且没有问题。如果 HTML 是 RTF 备注字段,Access 会解释它,并且它在表格中显示为格式化。真正的问题是逆问题;一旦 Access 发回 HTML 字符串,Excel 就不会恢复格式。而且我有一个非常hacky的宏来将HTML重新解释为格式化文本......