【问题标题】:Send Rich Text Formatting to Access from Excel cell via DAO Recordset通过 DAO 记录集将富文本格式从 Excel 单元格发送到 Access
【发布时间】: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重新解释为格式化文本......

标签: excel ms-access vba


【解决方案1】:

Access 将备忘录格式称为“富文本”,但如果您仔细观察,帮助说明:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2013-06-04
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多