Как поместить текст в буфер обмена, чтобы он вставлялся как таблица в Word? - PullRequest
8 голосов
/ 18 ноября 2008

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

Ответы [ 5 ]

7 голосов
/ 18 ноября 2008

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

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

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

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

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

4 голосов
/ 25 декабря 2008

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

0 голосов
/ 25 декабря 2008

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

0 голосов
/ 18 ноября 2008

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

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

0 голосов
/ 18 ноября 2008

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

...