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

Как очистить буфер обмена в excel

Очистка буфера обмена

При сборе слишком многких элементов в буфере обмена может возникнуть ошибка с сообщением о том, что буфер обмена заполнен. Вот как можно очистить буфер обмена.

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

  1. На вкладке Главная в группе Буфер обмена нажмите кнопку вызова диалогового окна Буфер обмена. Кнопка вызова окна буфера обмена находится в правом нижнем углу группы параметров
  2. Область задач Буфер обмена отображается в левой части листа, и в ней показаны все фрагменты, содержащиеся в буфере обмена. В списке
  3. Чтобы очистить весь буфер обмена, нажмите кнопку Очистить все. Кнопка
  4. Чтобы удалить отдельный фрагмент, щелкните стрелку справа от него и нажмите кнопку Удалить. Вы можете удалить клип 1.

См. также

Facebook LinkedIn Электронная почта

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Как очистить буфер обмена в excel

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

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

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

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

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

‘Копирование одной ячейки в буфер обмена
Range ( «A10» ) . Copy
Cells ( 10 , 1 ) . Copy
‘Копирование диапазона ячеек в буфер обмена
Range ( «B8:H12» ) . Copy
Range ( Cells ( 8 , 2 ) , Cells ( 12 , 8 ) ) . Copy
‘Вставка ячейки (диапазона) из буфера обмена на рабочий лист
ActiveSheet . Paste Range ( «A20» )
ActiveSheet . Paste Cells ( 20 , 1 )

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

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

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

Объект DataObject

DataObject – это область временного хранения форматированных фрагментов текста, используемая в операциях переноса данных.

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

Метод Описание
GetFromClipboard Копирует данные из буфера обмена в DataObject
GetText Извлекает текстовую строку из объекта DataObject в указанном формате
PutInClipboard Перемещает данные из DataObject в буфер обмена
SetText Копирует текстовую строку в DataObject, используя указанный формат

Копирование текста из переменной в буфер обмена

Sub Primer2 ( )
Dim s As String , myData As New DataObject
s = «Копирование текста из переменной в буфер обмена»
‘Копируем текст из переменной в DataObject
myData . SetText ( s )
‘Перемещаем текст из DataObject в буфер обмена
myData . PutInClipboard
‘Проверяем содержимое буфера обмена
ActiveSheet . Paste Range ( «A1» )

Копирование текста из буфера обмена в переменную

Sub Primer3 ( )
Dim s As String , myData As New DataObject
Range ( «A1» ) = «Копирование текста из буфера обмена в переменную»
‘Копируем данные из ячейки в буфер обмена
Range ( «A1» ) . Copy
‘Копируем данные из буфера обмена в DataObject
myData . GetFromClipboard
‘Извлекаем текст из объекта DataObject и присваиваем переменной s
s = myData . GetText
‘Проверяем содержимое переменной s

Очистка буфера обмена

Application . CutCopyMode = False
Sub Primer4 ( )
Range ( «A1» ) = «Очистка буфера обмена»
Range ( «A1» ) . Copy
ActiveSheet . Paste Range ( «A2» )
ActiveSheet . Paste Range ( «A3» )
Application . CutCopyMode = False
On Error Resume Next
ActiveSheet . Paste Range ( «A4» )
ActiveSheet . Paste Range ( «A5» )

Оператор On Error Resume Next необходим для обработки (пропуска) ошибки, возникающей при вставке из пустого буфера обмена.

Функции для работы с буфером обмена

‘Функция записи текста в буфер обмена
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
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

8 комментариев для “VBA Excel. Буфер обмена (копирование, вставка, очистка)”

Sub Primer2 ( )
Dim s As String , myData As New DataObject
s = «Копирование текста из переменной в буфер обмена»
‘Копируем текст из переменной в DataObject
myData . SetText ( s )
‘Перемещаем текст из DataObject в буфер обмена
myData . PutInClipboard
‘Проверяем содержимое буфера обмена
ActiveSheet . Paste Range ( «A1» )

В А1 вставляется какой-то непечатаемый символ и всё. При переходе к другому приложению и попытке вставить содержимое буфера — фиаско.

Добрый день, Михаил!
Такое встречается, начиная с Windows 8, когда открыта хотя бы одна папка в Проводнике. Я добавил в статью функции для работы с буфером обмена, они должны работать.

В Win 8.1 такой проблемы не наблюдаю, уж по всякому погонял, пытаясь вызвать ошибку — всегда правильно отрабатывает ))
А за статью большое спасибо!

Нашёл такую информацию на случай получения ошибки относительно типа данных DataObject.
Чтобы заработал тип данных «DataObject» нужно подключить инструмент «Microsoft Forms Object Libraries». Для этого необходимо выполнить действия в редакторе макросов Эксель:
1. Открыть Tools/References;
2. Через кнопку Browse открыть файл C:\WINDOWS\SYSTEM32\FM20.DLL. Файл «FM20.DLL» может оказаться в другой подпапке Windows, поискать по названию. Может быть в «SysWOW64» или в «System».

Добрый день. Подскажите пожалуйста в чем ошибка? Как только открывается вторая табличка, то файлы скопированные пропадают из буфера и пишет ошибку 424 Objekt required.

Sub Макрос1()

‘ Макрос1 Макрос

‘ Сочетание клавиш: Ctrl+й

ActiveSheet.Range(«$A$11:$AD$182»).AutoFilter Field:=1, Criteria1:= _
xlFilterToday, Operator:=xlFilterDynamic
Range(«D11:D247»).Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.Copy
Dim fn As String: wb = ThisWorkbook.Path & «\ПВКоборудование.xlsm»
With Application
.EnableEvents = True
.Calculation = xlCalculationManual
.ScreenUpdating = True
.Visible = True
Workbooks.Open Filename:=wb
Sheets(«наименования»).Select
Range(«C1»).Select
AktiveSheet.Paste
End With
End Sub

Здравствуйте, Иван!
Попробуйте заменить строку
AktiveSheet.Paste
на
ActiveSheet.Paste Range(«C1»)
Спасибо. Помогло
Константин 16.03.2023 в 10:51

Проблема на виндовс 10 осталась только вместо 2-х квадратов пустоту переносит при открытой одной вкладке.
Dim longString As String
‘Dim sel As Object
»Dim obj3ADes As New DataObject
‘Dim obj3ADes As String
strFile = Intersect(listobjTechs.ListRows(1).Range, listobjTechs.ListColumns(«Value»).DataBodyRange)
Set objWordApp = CreateObject(«Word.Application») ‘Word session creation Word.Application
objWordApp.Visible = True
Set objWordDoc = objWordApp.Documents.Open(strFile) ‘open the .doc file
Dim listrowRowChecked As ListRow
Dim listcolumnColumnChecked As ListColumn
For Each listrowRowChecked In listobjectData.ListRows
Set objWordDoc = objWordApp.Documents.Open(strFile)
For Each listcolumnColumnChecked In listobjectData.ListColumns
If listcolumnColumnChecked.Name Like «» Then
‘REPLACEMENTS
‘Debug.Print listcolumnColumnChecked.Name, «is a placeholder» ‘TEST
objWordApp.Selection.Find.ClearFormatting
objWordApp.Selection.Find.Replacement.ClearFormatting
longString = Intersect(listcolumnColumnChecked.DataBodyRange, listrowRowChecked.Range).Value
‘obj3ADes.SetText longString
SetClipBoardText longString
‘obj3ADes.PutInClipboard
With objWordApp.Selection.Find
.ClearFormatting
.Text = listcolumnColumnChecked.Name
.Replacement.ClearFormatting
.Replacement.Text = «^c»
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
‘objWordApp.Selection.Find.Execute Replace:=wdReplaceAll
Else:
‘Debug.Print listcolumnColumnChecked.Name, «is no placeholder» ‘Test
End If
ClearClipBoardText
Next listcolumnColumnChecked

Excel буфер обмена vba

​Смотрите также​​ в обратной последовательности,​ буфер обмена в​ даже не имеют​ поддерживается в VBA​
​или вам важен​ объем данных?​ копировал свои объекты​ объект при вставке.​ на каждый текстбокс.​ 8 ячеек ниже.​: Реально сделать на​ буфер обмена очищался​

​ состав «Microsoft Forms​ приложение это и​

​End With​
​ буфером обмена​
​Darkman​
​ т.е. первая скопированная​
​ VBA MS Excel​

​ свойства hDC, по​ (в отличие от​

​ не результат, а​​Sasha_Smirnov​

​ у меня в​​Sub My() Dim​ И один скрин​Pana-Win​ AutoIt — делал.​ и производил копирование​ 2.0 Object Library».​

​ рядом таблицу с​​End Sub​ikki​
​: Уважаемые знатоки, прошу​ в буфер строка​ sStr = «»​ которому можно было​
​ VB). Делай так:​
​ сам процесс(общения на​
​: Может, с какого-то​ буфере остаётся мусор,​ PPAppl As Object​

​ на заголовок самого​​: По аналогии прицелиться​Но нужно «щупать»​ следующих восьми шифров.​Pana-Win​

​ листа — то​​ikki​
​: как вариант (но​ помощи. К сожалению​

​ будет вставлена в​
​ objClpb.SetText sStr objClpb.PutInClipboard​
​ бы восстановить хэндл. если​
​Private Declare Function​
​ форуме)?​

​ боку устроит код​
​ но всё бы​ Set PPAppl =​
​ окна.​
​ дальше в нужные​

​ ту программу, и​​ Ну а в​: Всем доброго времени​ может быть разницы​: Игорь, такой вариант​

​ надо пробовать):​
​ поиском не нашел​ конец листа последней.​vladpros​ в ёкселе, то​ OpenClipboard Lib ‘user32’​
​Gepar​ от Ципиховича (а​ хорошо но он​ CreateObject(«PowerPoint.Application») PPAppl.Visible =​Или Team Viewer.Ага,​ кнопки мышкой (что​ в общем пишется​

​ конце списка, чтоб​​ суток! Столкнулся с​ и не заметите​ даёт строку с​

​временно сохранить этот​​ похожей темы.​Буду благодарен за​, не работает!​
​Application.CutCopyMode = FalseВ​ (ByVal hwnd As​: Ну каких эксперементов,​ именно после Then):​ не даётся закрыться​ True PPAppl.Presentations.Add PPAppl.ActivePresentation.Slides.Add​ разобрался вроде))​ не айс, ибо​
​ не за 5​ макрос обработал оставшееся​ такой проблемой: в​ :)​ разделителями-табуляциями, а не​ массив в диапазон​Задача следующая: скопировать​ любую помощь.​Да и зачем​ Excel точно работает​

​ Long) As Long​​ в любом word​ Убрать лишнее сообщение,​ ворду своим тупым​
​ 1, 2 ActiveDocument.InlineShapes(1).Select​Gepar​ координаты и поменяться​ минут.​
​ число шифров, которое​ экселе имеется список​
​Но нужно конечно​ таблицу :(​

​ ячеек на листе​​ в буфер обмена​Сам я флешер​ так сложно, написали​

Работа с буфером обмена в VBA

​Application.Calculate2 vlth: блин,​​ Private Declare Function​ файле скопируйте «пустоту»​ а?​ запросом на то​ ActiveDocument.ActiveWindow.Selection.Copy PPAppl.ActiveWindow.View.Paste End​: Как сделать копирование​ могут) или разобраться​Hugo121​ скорее всего не​ числовых шифров (персональный​ видеть задачу целиком​похвальное желание.​ (можно скрытом).​ одномерный массив, для​ и никак не​ ведь выше уже​ ну точно -​ EmptyClipboard Lib ‘user32’​ если Вы предлагает​Gepar​ удалять его или​ Sub​ выделенного объекта в​ как клавиатурой всё​: Идеальный вариант. Сделать​ будет равно восьми.​ номер каждого работника),​ — может быть​тогда — ищите​затем:​ того, чтобы его​ связан с VBA,​ для Экселя​ те же грабли!​ () As Long​ этот вариант, даже​:​ оставить. Как почистить​Alex77755​ буфер windows и​ делать и симулировать.​

​ кликер вроде активировать​​ Люди добрые, кто​
​ необходимо их перенести​ проще сделать временный​

​ и изучайте инфу​​диапазон_ячеек.Copy​ можно было вставить​ просто человек попросил​Application.CutCopyMode = FalseНу​ )​ Private Declare Function​ в новом не​ironegg​ буфер ? Копирую​: Не совсем то​

​ вставку из буфера​​ В таком варианте​ окно, выбрать область,​
​ понимает и разбирается​ в программу на​ документ Экселя, выгрузить​ о формате представления​и — шагом​

​ в виде таблицы​​ написать макрос, чтобы​ а что там​2 Natalie: поскольку​ CloseClipboard Lib ‘user32’​ сохранённом ворд файле​, а Вы скажите​ так​ но ..​
​ объекта (или просто​ как правило всё​ копировать активировать окно​ в этом помогите,​

​ подобии 1С для​​ туда этот массив​ информации в буфере​ марш в «другое​ в совершенно другое​ автоматизировать некоторые операции​ у ТС -​
​ ‘Me.hWnd’ бессмысленно в​ () As Long​ например, я конечно​ как перед закрытием​

​ActiveDocument.InlineShapes(1).Select ActiveDocument.ActiveWindow.Selection.Copy PPAppl.ActiveWindow.View.Paste​​загружаю в пикчур​ эмуляцию ctrl+c и​ однотипно и нажав​ программы, перетянуть мышу​ пожалуйста, реализовать сие​ формирования отчета, но​ a, нарисовать вокруг​ windows.​ приложение»​ приложение.​ с екселем на​ известно только ему. ​ VBA (как уже​ ‘ Sub ClearClip()​ могу Вам приложить​ скопировать туда пустоту​Alex77755​

​ из файла​ ctrl+v) через макрос​ к примеру таб​ куда надо, щёлкнуть,​
​ чудо )))​ вставка в эту​
​ красивую рамку, затем​ибо, если вам​Darkman​
​Dim a(1 To​ работе.​s0ny​ бывало, я перепутался​ OpenClipboard Me.hWnd ‘​ пустой файл word​
​ и я это​: Не уверен на​

Работа с буфером обмена

​очищаю буфер​​ vba?​ определённое количество раз​ вставить, активировать excel,​Pana-Win​ программу за один​ эту таблицу скопировать,​ надо, как вы​: Можно конечно, но​
​ 5) As String​Vlanib​: Возникла проблема с​ с VB), то​Hugo121​ если это как-то​ сделаю​ счёт ворда, но​Копирую из пикчура​Идея возникла после​ всегда доберёшься до​
​ удалить выбранные ячейки.​: Возможно.​ раз возможно только​ документ убить.​ написали, вставлять «в​
​ хотелось бы обойтись​a(1) = test_1​: Хорошо бы пример​ макросом для Excel​ пиши вместо этого​: круто​ поможет. Сделать это?​dzug​

​ в екселе имеется​​ в буфер​ того как потратил​
​ нужного места. Уродский​С синтаксисом нужно​
​Приведите пример книги,​
​ ВОСЬМИ шифров, а​Darkman​
​ виде таблицы», то​ без создания промежуточных​
​a(2) = test_2​ файла с точно​Задача следующая:​

​ там ‘0&’ ВСЕГДА​​БОЛЬШОЕ СПАСИБО​

​XPraptor​​: Может это поможет:​ возможность отключить. ​

​Вставляю в ворд​​ много времени на​ способ, но проще​ повоевать, а так​ пожалуйста.​ их очень много.​: Hugo, ребята, спасибо​ задача не такая​ дополнительных книг.​a(3) = test_3​ поставленной задачей. Чует​На рабочем листе​ (а не только​2Comanche: и опять​: вот собственно и​
​Прочесть буфер обмена​

​вроде так​​ в рамку​ попытки перенести картинку​ некуда​ вполне себе лёгкий​
​Hugo121​
​ Возможно ли создать​

​ Вам всем огромное​​ уж тривиальная, насколько​Hugo​
​a(4) = test_4​ сердце буфер тут​ выделены несколько строк.​

​ при вызове из​​ те же ‘грабли’. ​ весь вопрос​ironegg​Application.DisplayAlerts = False​

​PIC.Picture = LoadPicture(Картинка1.Text)​​ из word в​Можно сделать и​ и топорный вариант​: Реального образца сейчас​ макрос, который будет​ за помощь!​

​ мне известно.​​: Sub PutInClb()​​a(5) = test_5​​ вобще не зачем.​ Макрос находит выделенные​ модуля).Dim objClpb As​From: comanche​Заранее спасибо​

​: а в чем​​Gepar​
​ Clipboard.Clear Clipboard.SetData PIC.Picture​

​ powerpoint и заметил​​ более человеческим способом​korvindeson​ нету, накидал как​ автоматически копировать по​
​Это уже огромный​Юрий М​Dim a(1 To​Заранее спасибо за​s0ny​ строки и последовательно​
​ New DataObject, sStr​http://relib.com/forums/topic.asp?pg=100&id=827382​vlth​ проблема? скопировать пустоту​

​: Закрываю word вот​​ DocWord.Frames.Item(2).Range.Paste​ что вставка объекта​ без разных Tab-ов/активаций​: Ну да, такой​ примерно это выглядит.​ 8 шифров с​ шаг вперед, единственное,​: А никто и​ 5) As String​ помощь!​: прикрепил файл с​ копирует их в​

Как очистить буфер обмена?

​ As String ‘Так​​Дело в том,​: Clipboard.Clear​
​ или скопировать перед​

​ так если что​​Gepar​

​ через ctrl+v скопированного​​ через WinAPI.​

​ примерно процесс и​​ Идет пофамильный список​
​ данным шагом из​

​ что заменил vbTab​​ не предлагал дополнительных​a(1) = «test_1″​Serge​ примером​
​ буфер обмена, причем​ отправляем в буфер​ что вышепривед╦нные два​Letter_D​ закрытием?​WordAppl.DisplayAlerts = False​: А в pp ?​ в word’е ранее​Нужно воспользоваться этим:​ нужен. Только ещё​ людей и в​ экселя, заносить данные​

​ на vbNewLine​​ книг :-)​
​a(2) = «test_2″​

​: Поможет?​Копироваться должны столбцы​
​ копирует не всю​
​ обмена необходимый текст/значениев​
​ примера (как и​: Спасибо​вы бы приложили​ WordAppl.Documents.Close WordAppl.QuitНо предупреждение​Alex77755​ по ctrl+c меня​ http://www.cyberforum.ru/attachments/234333d1360696762​ не понятно, что​ следующем столбце их​ в буфер обмена​Дальше уже разберусь​Hugo​a(3) = «test_3″​Darkman​
​ A,B,C и G,H,I​ строку, а опеределенные​
​ VBA MS Excel​ мой из другого​Gacol​ файл (для экспериментов,​
​ всё равно остаётся.​: программно не работал.​ вполне устраивает.​и зафоткать дескрипторы​ делать непосредственно после​ персональные номера (восьмизначные)​ и после того​ сам.​: Ну если это​a(4) = «test_4″​: К сожалению нет,​Думаю буфер все​ ячейки строки(ячейки могут​ sStr test_5″​ массив то уже​ же нужен, т.к.​ идти непоследовательно). Затем​
​ текст» objClpb.SetText sStr​ форм VB, а​Help!​ — задача была​

Excel работа с буфером обмена

​: а если скопирвать​​Gepar​ частично разобрался, разобраться​
​ программе.​
​Ячейки можно не​ вам признателен за​ вставку этих 8​ за объект New:​ то будет таблица.​With GetObject(«New:»)​ задан, тут больше​ вставляться скопированные строки​ макрос вставляет скопированные​ objClpb.PutInClipboard ‘Так очищаем,​ не VBA. Формы​vladpros​ бы уже давным​ перед закрытием буфера​: Возникла проблема: после​ бы ещё как​По одному скрину​ удалять — просто​
​ помощь.​ шифров с помощью​
​Hugo​А если например​.SetText Join(a, vbTab):​ копать надо в​ могут в другой​ строки в конец​ вернее, просто делаем​ VBA не имеют​

​: Объект ClipBoard не​​ давно решена.​ пустоту, или малый​ того как я​ форматировать по центру​ при наведении мышкой​

​ выделять-копировать область на​​korvindeson​ Cntr-V в программу,​
​: DataObject, входящий в​ выгрузить в другое​
​ .PutInClipboard​ сторону работы с​ документ​ листа, причем вставляет​ пустую запись в​

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

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