通过DAO Recordset从Excel单元格发送富文本格式

时间:2016-07-05 19:09:08

标签: vba excel-vba ms-access access-vba excel

我有什么

我有一个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标记,然后发送它?我希望不会,并且想知道如何修改我的代码以发送带文本的格式!

1 个答案:

答案 0 :(得分:0)

Access将备忘录格式称为" Rich Text",但仔细观察,帮助说:

  

选择富测试将文本存储为HTML并允许进行富文本格式化。

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

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

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