Функции для работы с буфером обмена
(очистка буфера обмена, запись в буфер обмена, чтение из буфера обмена)
ВНИМАНИЕ: для работы функций требуется установка ссылки на библиотеку Microsoft Forms 2.0 Object Library:
Public Sub SetClipboard(Obj As Variant) Dim MyDataObj As New DataObject MyDataObj.SetText Format(Obj) MyDataObj.PutInClipboard End Sub Public Sub SetTextIntoClipboard(ByVal txt As String) Dim MyDataObj As New DataObject MyDataObj.SetText txt MyDataObj.PutInClipboard End Sub Public Function GetClipboard() As Variant GetClipboard = "": On Error Resume Next Dim MyDataObj As New DataObject MyDataObj.GetFromClipboard: GetClipboard = MyDataObj.GetText() End Function Public Sub ClearClipboard() Dim MyDataObj As New DataObject MyDataObj.SetText "": MyDataObj.PutInClipboard End Sub
Аналогичная функция ClipboardText (чтение текста из буфера обмена), но не требующая подключения библиотеки:
Sub ПримерИспользования() txt = ClipboardText MsgBox txt, vbInformation, "Содержимое буфера обмена Windows" End Sub Function ClipboardText() ' чтение из буфера обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipboard ClipboardText = .GetText End With End Function Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText txt$ .PutInClipboard End With End Sub
Комментарии
Позднее связывание универсальнее, но по мне так проще в Excel проверять наполнение буфера через Application.CutCopyMode
Отправить комментарий