Идите со мной на мгновение.
Я создал приложение Access для управления данными для внутреннего проекта в моей компании. Одной из функций этого приложения является запрос к базе данных, затем вывод запросов в электронную таблицу Excel, а затем форматирование электронной таблицы в спецификации.
Одной из ячеек вывода является большой объем текста из поля Rich Text Memo в базе данных. Когда форматированный текст отправляется в Excel, он содержит HTML-теги, указывающие полужирный или курсив , поэтому для вывода необходимо добавить форматирование и удалить теги.
Вот пример текста, который мне нужно отформатировать (этот текст находится в одной ячейке):
For each participant, record 1 effort per lesson delivered
• Time Spent = # minutes spent on lesson
<strong>OR</strong>
For each participant, record 1 effort per month
• Time Spent = total # minutes spent on lessons that month
<strong>Note:</strong> Recording 1 effort per lesson is recommended but not required
<strong>Note:</strong> Use groups function in ABC when appropriate (see <u>Working With Groups</u> in ABC document library on the ABC portal)
У меня есть три аккуратные маленькие рекурсивные функции для форматирования текста, вот функция жирного шрифта:
Function BoldCharacters(rng As Range, Optional ByVal chrStart As Long)
'This will find all the "<strong></strong>" tags and bold the text in between.
Dim tagL As Integer
tagL = 8
rng.Select
If chrStart = 0 Then chrStart = 1
b1 = InStr(chrStart, ActiveCell.Value, "<strong>") + tagL
If b1 = tagL Then Exit Function
b2 = InStr(b1, ActiveCell.Value, "</strong>")
ActiveCell.Characters(Start:=b1, Length:=b2 - b1).Font.Bold = True
'Remove the tags
'ActiveCell.Characters(Start:=1, Length:=1).Delete
'ActiveCell.Characters(Start:=b2 - tagL, Length:=tagL + 1).Delete
'Recursion to get all the bolding done in the cell
Call BoldCharacters(ActiveCell, b2 + tagL + 1)
End Function
Теперь вот проблема. Это хорошо форматирует текст. Но метод «ActiveCell.Characters.Delete» завершается ошибкой , когда я пытаюсь использовать его для удаления тегов, поскольку ячейка содержит более 255 символов. Поэтому я не могу использовать метод удаления.
И когда я делаю это:
With xlApp.Selection
.Replace what:="<strong>", replacement:=""
Все теги удалены, но форматирование уничтожено! Так какой смысл!?
Я ищу способ форматирования текста и удаления тегов. Я подумываю взять большой кусок текста и разделить его на несколько ячеек, обрабатывая форматирование и повторной сборки, но это звучит сложно, подвержено ошибкам и может даже не работать.
Есть идеи?
Спасибо!