| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Вставка RTF-текста в RichTextBox (VBA в MS Word) |
| Автор: kuksha 26.6.2017, 11:09 | ||
| Есть документ MS Word в тексте которого есть например такое предложение: ааа ббб ввв ггг. Это предложение надо вставить в текстовый RichTextBox в диалоговом окне моего макроса в таком же виде, то есть с сохранением красного, жирного, размера, шрифта и т.д. Там я его сам как-то обрабатаю и получу например такое: ааа ккк ччч ггг. Далее это изменённое предложение надо вставить обратно в документ на место исходного предложения. Всё. (найти текст, выделить и скопировать в буфер обмена я умею) Собственно вопрос: как сделать вставку форматированного текста в элемент RichTextBox? Ну и обратно в текст документа? Сейчас я делаю это командой VBA:
но постоянно вылезают неприятности, в которых я даже копаться не хочу - надо сделать это исключительно средствами VBA. Помогите кто может... |
| Автор: Akina 26.6.2017, 11:49 |
| Ну так и вставляйте из буфера обмена в RichTextBox.RTFText... |
| Автор: kuksha 26.6.2017, 13:04 |
| я вижу свойство .TextRTF у элемента RichTextBox, но что ему присвоить - не могу догнать. GetText вставляет голый текст, без RTF. Напишите пример кода. |
| Автор: Akina 27.6.2017, 09:51 | ||
Для начала скопируйте из RichTextBox.TextRTF форматированную как надо строку, а потом посмотрите, как оно выглядит, если это рассматривать как plain text:
|
| Автор: kuksha 27.6.2017, 12:28 |
| Akina, сделал. Вот что я вижу в TextBox1: {\rtf1\ansi\ansicpg1251\deff0\nouicompat\deflang1049{\fonttbl{\f0\froman\fprq2\fcharset204{\*\fname Times New Roman;}Times New Roman CYR;}{\f1\fnil\fcharset204 Tahoma;}} {\colortbl ;\red255\green4\blue5;} {\*\generator Riched20 14.0.6015.1000;}{\*\mmathPr\mwrapIndent1440}\viewkind4\uc1 \pard\f0\fs24 , \'ea\'ee\'e4 \'ef\'ee\'e4\'f0\'e0\'e7\'e4\'e5\'eb\'e5\'ed\'e8\'ff: 77-11, \'e7\'e0\'f0\'e5\'e3\'e8\'f1\'f2\'f0\'e8\'f0\'ee\'e2\'e0\'ed \'ef\'ee \cf1\'ec\'e5\'f1\'f2\'ee\'ed\'e0\'f5\'ee\'e6\'e4\'e5\'ed\'e8\'fe\cf0 : \'e3.\f1\fs17 \par \par } Что дальше? Мне надо не из RichTextBox в RichTextBox, а из документа в RichTextBox и обратно. |
| Автор: kuksha 29.6.2017, 09:38 |
| Нашёл как это делается: https://msdn.microsoft.com/VBA/Access-VBA/articles/retrieve-information-from-the-clipboard но поскольку там задано CF_TEXT = 1 , то вставляется голый текст. А как вставить RTF? В стандартных типах данных клипборда я RTF не вижу... |
| Автор: kuksha 2.7.2017, 21:47 |
| Помогли на другом форуме, но внешнюю ссылку здесь наверное нельзя давать... В двух словах - решилось именно перебором содержимого буфера обмена ПО ТИПАМ данных с поиском Rich Text. Вопрос закрыт. |
| Автор: Akina 2.7.2017, 22:15 | ||
Можно... даже кнопка есть специальная - "Ссылка", слева вторая сверху.
Гм... мало того, что формулировочка так себе - так в контексте обсуждения она вообще выглядит как феерический бред. Так что ссылка на "тот" форум совсем не повредит - похоже, решённая задача не очень совпадает с исходно заявленной... |
| Автор: kuksha 4.7.2017, 08:21 |
| Четвёртое сообщение снизу: http://www.sql.ru/forum/701613/kak-vstavit-rtf-stroku-s-pomoshhu-vba |