Консультация № 103322
25.09.2007, 12:45
0.00 руб.
0 1 1
Добрый день.
Помогите, есть 2 вопроса по Excel’ю:
1) Как чистить буфер обмена макросом?
2) В Excel 2003 буфер обмена состоит из 24 областей куда он записывает каждый раз по очереди когда используешь Copy. Вопрос: можно ли резервировать одну область для макроса и работать только с ней, что бы не забивать буфер полностью и из других приложений нельзя было воспользоваться этими данными и перезаписать их?

Обсуждение

давно
Профессионал
848
1596
28.09.2007, 10:51
общий
это ответ
Здравствуйте, Вольхин Олег Валерьевич!
1. Чистить буфер можно следующим образом:
==========================
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

Sub ClearClipboard()
OpenClipboard Application.hwnd
EmptyClipboard
CloseClipboard
End Sub
============================

2. Как я понимаю - буфер обмена windows существует только один. 24 области буфера это программная реализация экселя - т.е. на уровне приложения, а не на уровне ОС. Последний элемент в буфере экселя и есть буфер windows. Т.о. нет возможности получить доступ ко всем областям из других приложений. Из других преиложений доступ можно получить только к последнему элементу. При очистке буфера с помощью API(пример выше) очищается только этот последний элемент.
Форма ответа