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

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


person Shane Miskin    schedule 17.11.2008    source источник


Ответы (4)


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

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

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

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

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

person Kluge    schedule 18.11.2008
comment
У меня это работает, но я обнаружил, что не могу вставить данные ячейки таблицы в существующую таблицу Word, так же, как вы можете копировать и вставлять между таблицами Word. Вместо этого данные таблицы буфера обмена отображаются в виде вложенной таблицы в одной ячейке таблицы Word. Для того, чтобы это работало, вероятно, требуется детальное понимание того, что Word ожидает найти в буфере обмена. - person Craig McQueen; 12.11.2010
comment
Чтобы вставить ячейки таблицы в таблицы Word, как это делает Word, я предполагаю, что мне нужно поместить формат RTF в буфер обмена. - person Craig McQueen; 12.11.2010

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

person mkoeller    schedule 17.11.2008
comment
Не работает. Вам нужно сообщить буферу обмена, что это таблица HTML, когда вы копируете ее, чтобы она работала. - person Chris B.; 18.11.2008

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

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

person staticsan    schedule 17.11.2008

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

person Community    schedule 25.12.2008