Бывают случаи, когда необходимо организовать обмен данными через буфер обмена. Здесь предложен один из таких способов.
Здесь используется подход 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 Просмотров: 2591
Ваш коментарий будет первым | | |