Вопрос № 103322: Добрый день.
Помогите, есть 2 вопроса по Excel’ю:
1) Как чистить буфер обмена макросом?
2) В Excel 2003 буфер обмена состоит из 24 областей куда он записывает каждый раз по очереди когда используешь Copy. Вопрос: можно ли резервировать од...
Вопрос № 103.322
Добрый день.
Помогите, есть 2 вопроса по Excel’ю:
1) Как чистить буфер обмена макросом?
2) В Excel 2003 буфер обмена состоит из 24 областей куда он записывает каждый раз по очереди когда используешь Copy. Вопрос: можно ли резервировать одну область для макроса и работать только с ней, что бы не забивать буфер полностью и из других приложений нельзя было воспользоваться этими данными и перезаписать их?
Отвечает: PsySex
Здравствуйте, Вольхин Олег Валерьевич!
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(пример выше) очищается только этот последний элемент.
--------- Bom Shankar!
Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 28.09.2007, 10:51