Как сделать отдельные буферы обмена для макросов
Перейти к содержимому

Как сделать отдельные буферы обмена для макросов

Работа с буфером обмена (Windows Clipboard) из VBA

Результат чтения текста из буфера обмена

ВНИМАНИЕ: для работы функций требуется установка ссылки на библиотеку Microsoft Forms 2.0 Object Library:

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

ПО Rastrwin: макрос импорта/экспорта таблиц с помощью буфера обмена

Окно Импорт CSV

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

Пример работы

Откроем таблицу узлов и выделим пару ячеек в разных строчках

Окно Узлы

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

Контекстное меню - Макросы

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

Вывод в excel

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

Забьем в ексель названия нужных нам столбцов, каждый в отдельный столбец

Нужные столбцы для копирования

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

Вставка в эксель

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

Отлично, теперь попробуем вставить данные из буфера обмена в растр.

Подготовим данные в екселе

Данные для вставки в Rastr3

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

Данные для вставки в Rastr3

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

Окно вставки

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

Результат работы

Установка

Так как этот макрос контекстный, то и привязывать его надо к каждой таблице отдельно. Разберем процесс отдельной установки.

Копируем файлы CopyToClipboard.rbs и PasteFromClipboard.rbs в Мои Документы — Rastrwin3 — contextmacro

Открываем Файлы — Настройки программы — Настройки — Контекстные макросы (context)

Меню Контекстные макросы

В открывшейся таблице создаем новую строчку, в которой пишем имя таблицы, где хотим отображать (название формы), название макроса, который вызывается при нажатии на меню, название самого меню, и доп. строку для передачи ссылки на таблицу, из которой запускается макрос (очень важный параметр)

VBA Excel. Буфер обмена (копирование, вставка, очистка)

Копирование содержимого и форматов ячеек (диапазона) в буфер обмена осуществляется методом Range.Copy, а вставка – методом Worksheet.Paste:

При вставке диапазона ячеек из буфера обмена на рабочий лист достаточно указать верхнюю левую ячейку места (диапазона) вставки.

Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, формулы, примечания и т.д.), а также применения к диапазону транспонирования или вычислений, используется метод Range.PasteSpecial (специальная вставка).

Буфер обмена и переменная

Передача текста между переменной и буфером обмена в VBA Excel осуществляется с помощью объекта DataObject. Стоит иметь в виду, что на некоторых компьютерах DataObject может некорректно работать при открытом окне проводника.

Объект DataObject

Подробнее об элементе DataObject вы можете прочитать на сайте разработчиков.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *