Ищете простой редактор форматированного текста, который можно использовать на VBA

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

Я не хочу, чтобы пользователю приходилось что-либо устанавливать, поэтому мне нужно, чтобы это было что-то, что использует то, что уже предоставляет Office или Windows. Очевидным кандидатом является встроенный в Windows Элемент управления Rich Edit.

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

Я рад рассмотреть альтернативные элементы управления, если они гарантированно не требуют установки (кроме как в составе файла Excel, содержащего остальную часть моего кода VBA). Он должен работать с Windows XP и новее, а также Office 2003 и новее.


person Gary McGill    schedule 24.11.2011    source источник


Ответы (4)


Вы можете просто попробовать сделать простой пользовательский интерфейс самостоятельно. Добавьте в форму командную кнопку, которая будет выделять выделенный текст в элементе управления Rich Edit жирным шрифтом. Или добавьте командную кнопку, которая будет выделяться курсивом, копировать или вставлять. Ваше воображение - ваш предел.

Я проверял Rich Edit Version 1.0 в Excel 2010 и мог получить доступ к тексту в элементе управления.

person Bobort    schedule 01.12.2011
comment
Какой контроль вы добавляете в форму? Я не вижу расширенного редактирования в моем наборе инструментов, даже когда я выбираю дополнительные элементы управления. - person Gary McGill; 01.12.2011
comment
Вам нужно будет установить ссылку на элемент управления из VBA. Нажмите Alt + F11, выберите Инструменты ›Ссылки. На моем компьютере это называется библиотекой типов msrtedit 1.0. Или в 2010 году щелкните Разработчик ›Вставить› Дополнительные элементы управления (в разделе «Элементы управления ActiveX») ›Класс MSREdit. - person Bobort; 05.12.2011
comment
Я не вижу этого на своей машине. Я предполагаю, что это по сути та же проблема, что и с ответом Денниса Палмера - DLL присутствует только в том случае, если у вас установлено определенное программное обеспечение. Может быть, снова доступ (интересно, действительно ли это тот же элемент управления). - person Gary McGill; 06.12.2011
comment
Основываясь на вашем вопросе, я подумал, что у вас уже есть доступ к встроенному элементу управления RichEdit (которым является MSREdit), и вы просто хотели узнать, как включить для него пользовательский интерфейс. Мне не удалось найти никаких ссылок для включения пользовательского интерфейса для элемента управления, поэтому я предлагаю создать свой собственный. Не могли бы вы пояснить, о чем я думаю? Спасибо. - person Bobort; 09.12.2011
comment
У меня есть файл riched20.dll на моем компьютере, и если я использую LoadLibrary на нем, я могу создать окно типа RichEdit20W, используя функцию Win32 CreateWindowEx. Но ни в Инструменты- ›Справочники, ни в дополнительных элементах управления нет ничего, что соответствовало бы упомянутым вами именам. Просмотр библиотеки DLL riched20.dll из инструментов ›Ссылки дает мне доступ к библиотеке с именем tom с множеством полезных на вид объектов, но ни один из них не создается из VBA, так что это не очень помогает. Мне очень интересно ваше решение - просто оно мне кажется недоступным ... - person Gary McGill; 09.12.2011
comment
Хорошо, я только что установил Office 2003 Small Business Edition на чисто отформатированный компьютер с Windows XP SP3 и обнаружил, что элемент управления Rich Edit отсутствует на этом компьютере. Прости! Я не думаю, что вы сможете получить хороший ответ, не потратив немного денег на новую версию Office или просто купив сторонний элемент управления Rich Edit. Тем не менее, этот веб-сайт также может быть вам полезен для вашего конкретного запроса: lebans.com/richtext .htm - person Bobort; 09.12.2011
comment
спасибо за попытку. Поскольку я ищу что-то, что я могу распространить среди пользователей по всему миру, у которых может быть любая версия Office и Windows, покупка чего-либо или изменение моей конфигурации не очень помогает. Но, по крайней мере, теперь я достаточно уверен, что это просто невозможно. - person Gary McGill; 11.12.2011
comment
Если вы покупаете сторонний элемент управления Rich Edit, они обычно предоставляют лицензию, которая позволяет вам распространять его вместе с вашим приложением. Кроме того, вы проверяли сайт Лебанса? Есть ссылка на способ сделать это в Access без элемента управления ActiveX. Это внизу страницы ... - person Bobort; 12.12.2011
comment
Спасибо. Я намеревался найти что-то, что не требует установки, поэтому надеялся использовать то, что поставляется с Excel / Windows. Все, что связано с Access, исключается по тем же причинам. - person Gary McGill; 13.12.2011
comment
Если вы посмотрите на формы Access, созданные Lebans, вы сможете адаптировать их к своим формам Excel. Он просто использует встроенную в Windows библиотеку общих диалоговых окон с вызовами API для создания собственного настраиваемого элемента управления RTF. Я предлагаю взглянуть на него, прежде чем так быстро отказаться от него. - person Bobort; 13.12.2011
comment
Спасибо, мне удалось довести работу Lebans до определенного уровня, хотя код там довольно ужасный. Теперь моя проблема заключается в том, чтобы вернуть стилизованный текст обратно в ячейку Excel ... (Excel не понимает RTF, и до сих пор я нашел единственный способ решить эту проблему - скопировать RTF из элемента управления в Word, затем скопируйте его из Word обратно в Excel! Юк.) - person Gary McGill; 14.12.2011
comment
Мы могли бы захотеть просто использовать HTML вместо RTF. Я нашел интересную статью об использовании HTML в ячейках здесь . Просмотрите комментарии в этой статье, чтобы узнать о некоторых идеях VBA по реализации форматирования. - person Bobort; 15.12.2011

Для тех, кто все еще ищет это. Как заявил Гэри МакГилл, Microsoft InkEdit Control - ваш лучший вариант.

Воспользуйтесь ссылкой ниже, чтобы узнать, какие переменные он может использовать:

https://www.thevbprogrammer.com/Ch10/10-06-RichTextBox.htm

person Dustin M    schedule 07.01.2021

Открыв окно Toolbox в редакторе Visual Basic Excel, выберите в меню Tools-> Additional Controls. Установите флажок рядом с MSREdit Class. Это добавит элемент управления отформатированным текстом к вашему набору инструментов. Оттуда вы можете добавить его в UserForm.

Я тестировал этот элемент управления как в Office 2003 в Windows XP, так и в Office 2010 в Windows 7. Похоже, вам все равно потребуется предоставить пользовательский интерфейс, позволяющий пользователю переключаться между полужирным шрифтом, курсивом и подчеркиванием.

Он принимает вставку (через Ctrl+V) некоторого форматированного текста, который я скопировал из Word, но я не мог понять, как заставить его переключать форматирование шрифта при вводе текста в элемент управления.

person CoderDennis    schedule 29.11.2011
comment
Звучит интересно, но я не вижу в списке класса MSREdit. Возможно, он будет установлен с чем-то другим (в этом случае это не то решение, которое гарантированно работает без установки, которое я ищу). - person Gary McGill; 29.11.2011
comment
Я не мог сказать, был ли он таким же, как Rich TextBox Control 6.0. Он находится в MSRTEDIT.DLL, который был в C:\Program Files\Micorosft Office в моих системах, поэтому я подумал, что он установлен вместе с Office. - person CoderDennis; 29.11.2011
comment
Я думаю, что его можно установить вместе с Access, поскольку многие из обращений Google, которые я получил при поиске информации, были связаны с Access. - person Gary McGill; 29.11.2011

Помещаем это здесь, чтобы исключить это ...

Похоже, что «Microsoft InkEdit Control», доступный из «Additional Controls» на панели инструментов, является надмножеством элемента управления Rich Text Edit (как следует из названия, он также поддерживает Ink).

Трудно сказать, широко ли он установлен - он есть на моей машине XP / 2003, но не на моей машине 2K / 2K. (Я видел, как сказано, что он установлен с Vista и Win7, но очевидно, что есть и более ранние версии).

В любом случае, я исключаю это, потому что использование элемента управления приводит к появлению сообщения во время выполнения о том, что элемент управления ActiveX является «небезопасным» (предположительно, связанный с хорошо известной проблемой с самим элементом управления Rich Text).

person Gary McGill    schedule 14.12.2011