通过DAO记录集从Excel单元格向Access发送富文本格式

通过DAO记录集从Excel单元格向Access发送富文本格式,excel,ms-access,vba,Excel,Ms Access,Vba,我拥有的 我有一个excel单元格,上面写着“A1”,还有一些格式化的文本。假设文本带下划线且粗体,并显示“abc”,每个字母的颜色不同 在access中,我有一个带有备注字段的表,文本格式设置为RTF 我想要什么 今天之前,我设法从Excel中打开一个记录集,获取Access表字段的文本和格式,并将其发送到Excel单元格。现在我想做的是相反的,但仍然来自Excel 我尝试的 当ID=4时,我尝试将A1的格式化文本发送到备注字段。发送单元格的值不会保留格式,也不会将单元格作为对象发送。以下是我

我拥有的

我有一个excel单元格,上面写着“A1”,还有一些格式化的文本。假设文本带下划线且粗体,并显示“abc”,每个字母的颜色不同

在access中,我有一个带有备注字段的表,文本格式设置为RTF

我想要什么

今天之前,我设法从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标记,然后发送?我希望不会,并想知道如何修改我的代码发送文本格式

Access将备忘录格式称为“富文本”,但如果仔细查看,帮助会显示:

选择富文本测试以将文本存储为HTML并允许富文本格式设置

这可以通过使用DAO检查字段的Value属性来确认。该字段的内容肯定是HTML

因此,您不需要任何RTF,但需要与富文本字段兼容的HTML。您可能会发现需要将Excel值复制到Word或PowerPoint中,然后复制到备注字段中。这有时会生成比Excel更友好的HTML


最安全的方法是自己构建HTML,尽管这很费时,但您可以控制哪些格式很重要,HTML需要多么简洁,以及使用了多少CSS。Excel的HTML往往很冗长,因此生成自己的HTML有助于最小化备注字段值的大小。

我建议您尝试使用二进制数据来表示备注字段。在尝试向Access发送信息时,如何将其转换为VBA?我现在正在发送A1范围,但默认情况下,它会发送range(“A1”).Value,我认为它是纯文本而不是格式。所以我觉得问题不在访问端,而是使用适当的参数发送。我从来没有处理过文本格式,但是克服免费工具提供的限制是我的爱好。。。第一:XL单元格中的数据是否以HTML格式保存?你有没有办法阅读这个html,比如说在msgbox中显示它?这将是一个简单的方法:像
rs!备注=范围(“A1”).htmlValue
(或
单元格(“A1”)
)。其他建议:将
Memo
字段改为
binary
字段,这样
rs!BinaryField=Range(“A1”)
将(可能…)复制
bit
s,而不是文本,并将(希望…)复制html标记。然后,当html位于Access表中时,将二进制数据转换为备忘录数据应该更容易。请保持我们(我)的状态:)@marlan我最终使用了一个宏将HTML标记添加到我发送的字符串中。这是非常快,没有问题。如果HTML是RTF备注字段,Access将对其进行解释,并在表格中以格式显示。真正的问题是反问题;Access发回HTML字符串后,Excel不会将格式设置放回原处。我有一个非常粗糙的宏,可以将HTML重新解释为格式化文本。。。