Отображение Rich Text Format в MS Excel в Excel

Что я хочу сделать

У меня есть база данных Access (C: \ Users \ 289894 \ Desktop \ Database1.accdb). Одно из полей [Table1] – [Memo].

Это поле относится к типу данных Memo с текстовым форматом, настроенным на rich text . Это позволяет сохранить некоторые записи как жирные, а некоторые записи сохранены как курсив .

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

Код, который я использовал, следующий:

  Dim datab As Database Dim rs As Recordset Dim path As String path = "C:\Users\289894\Desktop\Database1.accdb" Set datab = OpenDatabase(path) Set rs = datab.OpenRecordset("SELECT * FROM [Table1]") Debug.Print rs!Memo Range("A1") = rs!Memo 

Мой вопрос

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

После запуска кода в debug.print и Range («A1») есть <div><strong>aaa</strong></div> .

Как я могу изменить свой код, чтобы отправить формат для Excel? Я хотел бы иметь « aaa », выделенную жирным шрифтом в ячейке A1, точно так же, как в Access.

EDIT: Обходное решение Это решает непосредственную проблему, заданную вопросом, не отвечая на сам вопрос. Он использует Internet Explorer для вставки текста в виде Rich Text без тегов.

 Sub Sample() Dim Ie As Object Dim rng As Range Set rng = Feuil1.Range("A1") Set Ie = CreateObject("InternetExplorer.Application") With Ie .Visible = False .Navigate "about:blank" .Document.body.InnerHTML = rng.Value .ExecWB 17, 0 'Select all contents in browser .ExecWB 12, 2 'Copy them ActiveSheet.Paste Destination:=rng .Quit End With End Sub 

Сделайте это выстрелом. Диапазон циклов является общим. Кроме того, функция предполагает очень ограниченный HTML-код, как показано в вашем примере.

 Sub Test() Dim cel As Range For Each cel In Range("A1:A100") cel.Font.Bold = InStr(1, cel.Value, "<strong>") cel.Font.Italic = InStr(1, cel.Value, "<i>") cel.Value = RemoveHTML(cel.Value) Next End Sub Function RemoveHTML(sHTML As String) As String Dim sTemp As String sTemp = sHTML Dim bLeft As Byte, bRight As Byte bRight = InStr(1, sTemp, "</") bLeft = InStrRev(sTemp, ">", bRight) RemoveHTML = Mid(sTemp, bLeft + 1, bRight - bLeft - 1) End Function 
Interesting Posts

Excel VBA – Autofilter (2 столбца / 2 критерия) копирует строки, которые не соответствуют критериям

Как сделать несколько PivotItems видимыми в Excel VBA

Сопоставление привязки данных не может подключаться к указанному файлу

API JExcel: как изменить цвет ячейки?

Экспоненциальное сглаживание в Excel для Mac?

Excel VBA: печать данных из таблицы в текстовый файл занимает слишком много времени

C # – Как скопировать один лист Excel из одной книги в другую?

Индивидуальный регрессионный анализ в excel

excel поиск нескольких элементов

Как реализовать динамическую безопасность в PowerView

Макросменить цвет карты (состояния)

У меня 5 рабочих листов в моей книге excel, но я хочу специально защитить 3-й и 5-й рабочие листы с паролем

Powerpoint 2016 VBA Картинки

Excel не обновляется после программного изменения данных с помощью OpenXML

После написания формул в листе excel с xlwt чтение ячеек с помощью формул xlrd возвращает пустое

Давайте будем гением компьютера.