VBA Excel
241 subscribers
88 photos
23 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
Функции для работы с буфером обмена

🛠 Функция записи текста в буфер обмена:
Function SetClipBoardText(ByVal Text As Variant) As Boolean
    SetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.SetData("Text", Text)
End Function


🛠 Функция вставки текста из буфера обмена:
Function GetClipBoardText() As String
    On Error Resume Next
    GetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.GetData("Text")
End Function


🛠 Функция очистки буфера обмена:
Function ClearClipBoardText() As Boolean
    ClearClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.clearData("Text")
End Function


Пример использования функций для работы с буфером обмена:
Sub Primer()
Dim s As String
    s = "Копирование текста из переменной в буфер обмена"
    'Копируем текст в буфер обмена
    SetClipBoardText (s)
    'Вставляем текс из буфера обмена в ячейку "A1"
    Range("A1") = GetClipBoardText
    'Очищаем буфер обмена, если это необходимо
    ClearClipBoardText
End Sub


#VBA #ExcelVBA #БуферОбмена #ClipBoard
🔄 Работа с буфером обмена в VBA Excel

✖️ До Windows 8 в VBA Excel работали с буфером обмена через объект DataObject. Но в Windows 8 метод DataObject.PutInClipboard не работает правильно: если открыт хотя бы один экземпляр Проводника (папка), в буфер обмена записываются два квадратика. ◽️◽️☹️

В Windows 10 метод DataObject.PutInClipboard я не проверял, а в Windows 11 он работает корректно. Как работать с буфером обмена через DataObject смотрите на сайте. 🚀

🔥 Для работы с буфером обмена можно использовать следующие функции:
'Функция записи текста в буфер обмена
Function SetClipBoardText(ByVal Text As Variant) As Boolean
SetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.SetData("Text", Text)
End Function

'Функция вставки текста из буфера обмена
Function GetClipBoardText() As String
On Error Resume Next
GetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.GetData("Text")
End Function

'Функция очистки буфера обмена
Function ClearClipBoardText() As Boolean
ClearClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.clearData("Text")
End Function


📌 Пример:
Sub Primer()
Dim s As String
s = "Копирование текста из переменной в буфер обмена"
'Копируем текст в буфер обмена
SetClipBoardText (s)
'Вставляем текс из буфера обмена в ячейку "A1"
Range("A1") = GetClipBoardText
'Очищаем буфер обмена, если это необходимо
ClearClipBoardText
End Sub


💡 Ячейки и диапазоны ячеек копируем и вставляем по-старинке:
Sub RangeCopyPaste()
'Копирование диапазона ячеек в буфер обмена
Range("A1:F5").Copy
'Вставка диапазона из буфера обмена на рабочий лист
ActiveSheet.Paste Range("A7")
'Очистка буфера обмена
Application.CutCopyMode = False
End Sub


#VBA #ExcelVBA #ClipBoard #Range #БуферОбмена #Диапазон
👍4