Как поместить текст в буфер обмена и вставляет в таблицу в Word?

используя VBA в MS Office, как добавить текст в буфер обмена Windows, чтобы он вставлялся в Word как таблица?

5 ответов


буфер обмена Windows поддерживает несколько форматов. Когда вы хотите разместить вещи в буфере обмена, вы делаете один или несколько вызовов RegisterClipboardFormat() сообщая ему форматы объектов, которые вы будете размещать в буфере обмена, а затем вызовы SetClipboardData (), который фактически помещает данные в буфер обмена.

Если вы хотите иметь возможность вставлять таблицу в Word, то HTML-это самый простой формат для работы. Просто скопируйте таблицу HTML в буфер обмена, и она будет вставляться правильно в Word, при условии, что вы сначала зарегистрируете данные буфера обмена как объект HTML.

Я бы дал вам некоторый код, но проще всего просто сослаться на пример на MSDN:

как добавить HTML-код в буфер обмена с помощью Visual Basic

на этой странице даже показан пример копирования таблицы HTML в буфер обмена.


Kluge ответ правильный, но эта другая статья на MSDN имеет лучший код, который легче повторно использовать:http://blogs.msdn.com/jmstall/archive/2007/01/21/html-clipboard.aspx


вы пробовали форматировать его как таблицу HTML?


прошло некоторое время с тех пор, как я делал какое-либо Программирование Windows, но я, кажется, помню, что вы регистрируете формат объекта. Фактически, вы можете зарегистрировать несколько объектов разных форматов, и приложение вставки может выбирать между ними (например, с помощью Word ).

Я бы попытался создать объект таблицы Word, заполнить его ячейки вашими данными, а затем скопировать их в буфер обмена.


буфер обмена отлично... Но что-то кажется немного отрывочным в использовании его для хранения вывода из вашей программы для вставки в Word. Что ты пытаешься сделать, что ты, вероятно, должен сделать каким-то другим способом?