Сохранить строку в буфер обмена и получить строку из буфера обмена (VBA)
Автор Daniel Pineault   
07.12.2020 г.

Бывают случаи, когда необходимо организовать обмен данными через буфер обмена. Здесь предложен один из таких способов.

 

Здесь используется подход Microsoft Forms Data Object. Можно так же использовать Windows API (что требует гораздо большего количества кода!), Но это наверное самое простое решение, которое решает общие потребности разработчиков.
Получения значения из буфера обмена

'--------------------------------------------------------------------------------------- 
' Procedure : Clipboard_GetText
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Retrieve the clipboard value
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/

' Req'd Refs: Late Binding -> none required

'
' Usage:
' ~~~~~~
' Debug.Print Clipboard_GetText
' sClipboardValue = Clipboard_GetText
'
' Revision History:
' Rev Date(yyyy-mm-dd) Description
' **************************************************************************************
' 1 2020-11-25 Initial Public Release
'---------------------------------------------------------------------------------------
Public
Function Clipboard_GetText() As String
On Error GoTo Error_Handler

With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
Clipboard_GetText = .GetText
End With

Error_Handler_Exit:
On Error Resume Next
Exit Function

Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: Clipboard_GetText" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Function
Занесение значения в буфер обмена
'--------------------------------------------------------------------------------------- 
' Procedure : Clipboard_SetText
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Push a string value to the Clipboard
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/

' Req'd Refs: Late Binding -> none required
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' sInput : The string to push to the clipboard
'
' Usage:
' ~~~~~~
' Call Clipboard_SetText("Hello World")
'
' Revision History:
' Rev Date(yyyy-mm-dd) Description
' **************************************************************************************
' 1 2020-11-25 Initial Public Release
'---------------------------------------------------------------------------------------
Public
Sub Clipboard_SetText(sInput As String)
On Error GoTo Error_Handler

With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText sInput
.PutInClipboard
End With

Error_Handler_Exit:
On Error Resume Next
Exit Sub

Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: Clipboard_SetText" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Sub

Как видите, код на самом деле очень прост и состоит всего из нескольких строк кода, использует позднюю привязку, поэтому не требуется определять ссылочные библиотеки и не использует какой-либо конкретный код приложения, поэтому он полностью переносимый и может использоваться в любом приложении VBA (Access, Excel, Outlook, PowerPoint, Word,…).

Источник VBA – Save String To Clipboard, Get String From Clipboard

Советую так же посмотреть Microsoft Forms reference

 


Просмотров: 1948

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code