Работа с буфером обмена (Windows Clipboard) из VBA
![]()
ВНИМАНИЕ: для работы функций требуется установка ссылки на библиотеку Microsoft Forms 2.0 Object Library:

Аналогичная функция ClipboardText (чтение текста из буфера обмена), но не требующая подключения библиотеки:
ПО Rastrwin: макрос импорта/экспорта таблиц с помощью буфера обмена

Но когда импорт или экспорт CSV делается один-два раза за сессию, то можно даже и потерпеть, и задать все настройки, а если нужно это делать постоянно, допустим, с редактированием данных в двух открытых файлах? Тогда без буфера обмена тут не обойтись…
Пример работы
Откроем таблицу узлов и выделим пару ячеек в разных строчках

Правой кнопкой вызываем контекстное меню — Макросы — Скопировать в буфер

Теперь откроем эксель и в новом листе вставим в ячейку A1 содержимое буфера обмена (ctrl+v), получим следующее

При копировании из растра в буфер обмена записались все значения столбцов соответствующих строк с выделенными ячейками. А если нам нужны не все столбцы, а только избранные?
Забьем в ексель названия нужных нам столбцов, каждый в отдельный столбец

Копируем (ctrl+C) в буфер обмена эту строку. Теперь опять копируем в буфер с помощью Контекстного меню — Макросы — Копировать в буфер и вставляем все в эксель

Теперь уже при копировании в буфер обмена записались значения тех столбцов, которые были записаны и сохранены в буфер до копирования из растра.
Отлично, теперь попробуем вставить данные из буфера обмена в растр.
Подготовим данные в екселе

Копируем и переходим в Rastr3, на любом месте вызываем контекстное меню — Макросы — Вставить

и видим вот такое окно

По части вставки все аналгочно функции импорт CSV: выбирается номер команды, и дальше происходит вставка. Единственное, нужно всегда обращать внимание, какой режим вставки включен в настройках макроса: с заголовками или без.

Установка
Так как этот макрос контекстный, то и привязывать его надо к каждой таблице отдельно. Разберем процесс отдельной установки.
Копируем файлы CopyToClipboard.rbs и PasteFromClipboard.rbs в Мои Документы — Rastrwin3 — contextmacro
Открываем Файлы — Настройки программы — Настройки — Контекстные макросы (context)

В открывшейся таблице создаем новую строчку, в которой пишем имя таблицы, где хотим отображать (название формы), название макроса, который вызывается при нажатии на меню, название самого меню, и доп. строку для передачи ссылки на таблицу, из которой запускается макрос (очень важный параметр)
VBA Excel. Буфер обмена (копирование, вставка, очистка)
Копирование содержимого и форматов ячеек (диапазона) в буфер обмена осуществляется методом Range.Copy, а вставка – методом Worksheet.Paste:
При вставке диапазона ячеек из буфера обмена на рабочий лист достаточно указать верхнюю левую ячейку места (диапазона) вставки.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, формулы, примечания и т.д.), а также применения к диапазону транспонирования или вычислений, используется метод Range.PasteSpecial (специальная вставка).
Буфер обмена и переменная
Передача текста между переменной и буфером обмена в VBA Excel осуществляется с помощью объекта DataObject. Стоит иметь в виду, что на некоторых компьютерах DataObject может некорректно работать при открытом окне проводника.
Объект DataObject
Подробнее об элементе DataObject вы можете прочитать на сайте разработчиков.