Excel VBA代码将特定字符串复制到剪贴板。

93 浏览
0 Comments

Excel VBA代码将特定字符串复制到剪贴板。

我想在电子表格上添加一个按钮,点击按钮后会将特定的 URL 复制到我的剪贴板中。

我有一点 Excel VBA 的知识,但是已经过了一段时间,所以遇到了困难。

admin 更改状态以发布 2023年5月25日
0
0 Comments

要在Windows剪贴板上写入文本(或从Windows剪贴板读取文本),请使用此VBA函数:

Function Clipboard$(Optional s$)
    Dim v: v = s  'Cast to variant for 64-bit VBA support
    With CreateObject("htmlfile")
    With .parentWindow.clipboardData
        Select Case True
            Case Len(s): .setData "text", v
            Case Else:   Clipboard = .getData("text")
        End Select
    End With
    End With
End Function


'Three examples of copying text to the clipboard:
Clipboard "Excel Hero was here."
Clipboard var1 & vbLF & var2
Clipboard 123
'To read text from the clipboard:
MsgBox Clipboard

这是一个解决方案,不使用MS Forms或Win32 API。相反,它使用Microsoft HTML对象库,该库快速而广泛,Microsoft并未像MS Forms那样将其弃用。此解决方案还尊重文本中的换行符,也适用于64位Office。最后,此解决方案允许同时写入和从Windows剪贴板读取文本。这个页面上没有其他解决方案有这些优势。

0
0 Comments

编辑 - MSForms已过时,因此您不应再使用我的答案。请使用此答案:https://stackoverflow.com/a/60896244/692098

我仅保留原始答案以供参考:

Sub CopyText(Text As String)
    'VBA Macro using late binding to copy text to clipboard.
    'By Justin Kay, 8/15/2014
    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    MSForms_DataObject.SetText Text
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing
End Sub

用法:

Sub CopySelection()
    CopyText Selection.Text
End Sub

0