Страница 1 из 1
RTF через clipboard
Добавлено: 13 Апрель 2021, 14:34
dik1970
В memo сохранен rtf-текст. Можно ли его загрузить в clipboard, чтобы потом вставить в doc. Для обычного текста работает:
Код: Выделить всё
setclipboard(bam:tech)
WObject{'Application.Selection.Find.Execute("'&clip('[Tech]')&'", , , , , , 1, 1, ,)'}
WObject{'Application.Selection.Paste("'&clip(clipboard())&'")'}
RTF через clipboard
Добавлено: 13 Апрель 2021, 23:12
kreator
Макрос Word создаёт такой:
Ещё посмотрите вот это - "WdPasteDataType Enumeration". И вот это - "wdPasteRTF".
RTF через clipboard
Добавлено: 14 Апрель 2021, 6:00
dik1970
Спасибо, направление понятно. Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается, а c wdPasteRTF возвращает такой же текст : {\rtf1\ansi\ansicpg1251\deff0......} что и просто paste.
А если в исходном примере вместо setclipboard(), предварительно поместить на clipboard тот же rtf через ctrl-c, то он вставляется как надо.
RTF через clipboard
Добавлено: 14 Апрель 2021, 8:13
gopstop2007
Попробуйте, может нужно исходное поле формата - text
RTF через clipboard
Добавлено: 14 Апрель 2021, 9:43
kreator
dik1970 писал(а): ↑14 Апрель 2021, 6:00
Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается
Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?
RTF через clipboard
Добавлено: 14 Апрель 2021, 11:32
dik1970
gopstop2007 писал(а): ↑14 Апрель 2021, 8:13
Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
kreator писал(а): ↑14 Апрель 2021, 9:43
Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?
Попробовал с wdPasteDefault, результат тот же. Офис пробовал 2007 sp2 и 2010
RTF через clipboard
Добавлено: 14 Апрель 2021, 15:10
gopstop2007
dik1970 писал(а): ↑14 Апрель 2021, 11:32
gopstop2007 писал(а): ↑14 Апрель 2021, 8:13
Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
Я имел ввиду, что данные при сохранении в memo - меняют свой формат, после чего и выводятся неверно в RTF. Добавьте/уберите атрибут BINARY в MEMO, возможно эксперимент с переменной как я писал выше - сохранить RTF в переменную формат - TEXT и потом вывести в ворд
RTF через clipboard
Добавлено: 14 Апрель 2021, 16:28
kreator
Дело скорее вот в чём. Кларион, к сожалению, посылает в клипборд обычный текст. Соответственно ВинВорд не понимает, что надо иметь дело с rtf. Что можно попробовать? Перед помещением текста rtf в виндовый буфер перевести сам буфер в режим rtf.
https://docs.microsoft.com/en-us/window ... ardformata. Ну и есть параметр СF_RTF для неё и ещё несколько связанных.