【问题标题】:VBA store formatted text in clipboardVBA 在剪贴板中存储格式化文本
【发布时间】:2022-12-26 05:02:20
【问题描述】:

我需要将一串文本复制/存储到剪贴板,但需要格式化该文本(字体类型、颜色、粗细等)

Private Sub copyToCB(varText As String)
    Dim x As Variant
    x = varText

    CreateObject("htmlfile").parentWindow.clipboardData.setData "text", x
End Sub

上面的工作是将引用的文本存储到剪贴板中,但它存储为纯文本。我希望它是例如粗体和红色。

我已经在互联网上搜索了几个小时,但无济于事。你会认为这会很简单,但我完全不知所措!

【问题讨论】:

  • String 没有格式 - 粗体/字体颜色来自哪里?
  • 这就是重点。我想用字体颜色、大小、系列等来格式化文本,但不能用纯字符串来完成。那么,怎么做呢?
  • 在 excel 中粘贴字符串后,使用宏记录器,以您想要的方式对其进行格式化,然后查看它提供的代码以执行此操作。但是,如果你想从 html 文件中粘贴它,请使用方法 "Paste_from_clipboard" from this site 或仅将 sendkeys 作为那里指定的控件 v。
  • 在那种情况下,更多的细节/上下文(例如最终粘贴的位置)可能会有用。
  • @Sgdva:不,不是这样。请参阅下面的评论。

标签: vba text format clipboard


【解决方案1】:

如果您使用来自 @GMCB 的剪贴板类,可以在 https://stackoverflow.com/a/63735992/478884 找到

你可以这样做:

Sub TestCopying()
    CopyWithSomeFormatting "This should paste as red/bold"
End Sub

Sub CopyWithSomeFormatting(txt As String)
    Dim myClipboard As New vbaClipboard 'Instantiate a vbaClipboard object
    myClipboard.SetClipboardText _
        "<span style='color:#F00;font-weight:bold'>" & txt & "</span>", "HTML Format"
End Sub

至少在粘贴到 Word/Excel 时对我有用

【讨论】:

  • 是的,确实如此,但是,天哪,这是多么巨大的痛苦啊!您会认为只需几行代码就可以轻松完成如此基本的事情!谢谢你!
  • @Michael 如果这解决了您的问题,请接受答案,这样可以帮助其他人确定问题已解决:)
【解决方案2】:

反之亦然?将干净的文本复制到剪贴板但没有任何格式或隐藏或可打印字符?

我需要从一个单元格中复制一个 excel 数据,但是当我在任何应用程序中粘贴时,文本都以格式化的方式保存,带有引号和奇怪的内容(例如,在 WhatsApp 中)。

谢谢!

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 2019-02-15
    • 2013-02-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多