Пользователь Leigh Webber на сайте social.msdn.microsoft.com опубликовал код VBA, реализующий простой в использовании интерфейс буфера обмена, использующий API Windows:
http://social.msdn.microsoft.com/Forums/en/worddev/thread/ee9e0d28-0f1e-467f-8d1d-1a86b2db2878
Вы можете получить Исходный код Ли Уэббера здесь
Если эта ссылка не проходит, найдите «Объект буфера обмена для VBA» в Центре разработки Office> Форумы Microsoft Office для разработчиков> Раздел Word для разработчиков.
Я создал два класса, провел его тестовые случаи, и он отлично работал в 32-разрядном VBA Outlook 2007 с пакетом обновления 3 (SP3) под 64-разрядным Windows 7. Скорее всего, это будет работать для доступа.
Совет: чтобы переименовать классы, выберите класс в окне «Проект» VBA, затем нажмите «Вид» в строке меню и нажмите «Окно свойств» (или просто нажмите F4).
С его классами, это то, что нужно, чтобы скопировать в / из буфера обмена:
Dim myClipboard As New vbaClipboard ' Create clipboard
' Copy text to clipboard as ClipboardFormat TEXT (CF_TEXT)
myClipboard.SetClipboardText "Text to put in clipboard", "CF_TEXT"
' Retrieve clipboard text in CF_TEXT format (CF_TEXT = 1)
mytxt = myClipboard.GetClipboardText(1)
Он также предоставляет другие функции для работы с буфером обмена.
Он также преодолевает ограничение 32KB MSForms_DataObject.SetText - основная причина, по которой SetText часто дает сбой. Однако имейте в виду, что, к сожалению, я не нашел ссылки на Microsoft, признающей это ограничение.
-Джит