Страницы: Пред. 1 2
RSS
Форматирование символов текста в зависимости от их цвета
 
Казанский, http://www.excelworld.ru/forum/2-40806-270488-16-1550308687 но объем , который запросил ТС реально большой. 84к ячеек, даже через HTM не быстро перекочевали.
По вопросам из тем форума, личку не читаю.
 
Привет, Александр
Цитата
_Boroda_ написал:
но видишь, ограничение.
Да, нет там ограничения - просто ленился. Application.Trim даёт проблему ;)  Он же под ограниченное число символов в ячейке рассчитан.
Переделал. 1,3 секунды на 10000 ячеек на ноуте 7-летней давности.
Код
Public Sub AddItalicForRed()
    Dim t As Single
    Dim sXml As String
    Dim pReg As Object
    t = Timer
    Set pReg = CreateObject("VBScript.RegExp")
    pReg.Global = True: pReg.IgnoreCase = True
    sXml = Selection.Value(xlRangeValueXMLSpreadsheet)
    pReg.Pattern = "\r\n|\r|\n"
    sXml = pReg.Replace(sXml, vbCr)
    pReg.Pattern = "\r+"
    sXml = pReg.Replace(sXml, " ")
    pReg.Pattern = "(<Font +html:Color=""#FF0000"">[^<>]+</Font>)(?!</I>)"
    sXml = pReg.Replace(sXml, "<I>$1</I>")
    Selection.Value(xlRangeValueXMLSpreadsheet) = sXml
    MsgBox Timer - t
End Sub

P. S. ТС какой забавный попался - пришёл на форум как магазин :)
 
Андрей VG,  Андрей, еще пара таких примеров и пойду вкуривать регулярки :-) , а пока не разобрался
Код
Public Sub AddItalicForRed2()
    Dim t As Single
    Dim sXml As String
    Dim pReg As Object
    t = Timer
    sXml = Selection.Value(xlRangeValueXMLSpreadsheet)
    a = Split(sXml, vbCrLf)
    For i = 0 To UBound(a)
        a(i) = Application.Trim(a(i))
    Next
    sXml = Join(a, " ")
    'sXml = Replace(sXml, vbCrLf, "")
    a = Split(sXml, "<Font html:Color=""#FF0000"">")
    If UBound(a) > 0 Then
    For i = 1 To UBound(a)
        B = Split(a(i), "</Font>")
        B(0) = "<I>" & B(0) & "</I>"
        a(i) = Join(B, "</Font>")
    Next
    sXml = Join(a, "<Font html:Color=""#FF0000"">")
    End If
    Selection.Value(xlRangeValueXMLSpreadsheet) = sXml
    MsgBox Timer - t
End Sub

Скорость несколько ниже, но не существенно.
Изменено: БМВ - 17.02.2019 12:47:25
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
еще пара таких примеров
Привет, Михаил.
Ловлю на слове, раз, постараюсь найти и два.
Цитата
БМВ написал:
а пока не разобрался
в чём?
Цитата
БМВ написал:
Split(sXml, "<Font html:Color=""#FF0000"">")
потенциально ведёт к вложенному курсиву. Ничего страшного, но зачем?
Изменено: Андрей VG - 17.02.2019 12:51:51
 
Цитата
Андрей VG написал: в чём?
ну не люблю я регулярки по причинам того, что редко нужны и постоянно вспоминать - как с нуля :-)

Цитата
Андрей VG написал: потенциально ведёт к вложенному курсиву
в смысле? делю по этому признаку чтоб найти начало блока красного текста, чтоб по том по ближайшему  тегу завершения поставить тег завершения курсива.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
делю по этому признаку чтоб найти начало блока красного текста
да, но красный текст уже может быть помечен курсивом. Пользователь что-то добавил и запускает повторно, выделив всё - так проще же ctrl+A
 
Цитата
Андрей VG написал:
да, но красный текст уже может быть помечен курсивом
да, но дадим приложению решить какой из курсивов первичен :-) . Я тоже думал что приведет к вложенности, но по факту остается всегда один и более того, он всегда встает перед/после тега цвета.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
он всегда встает перед/после тега цвета.
разработка заранее предполагала, что кто-то может так порезвиться.
 
Андрей VG,  ага. вредные отступы и переводы строк и те на места встают . :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
Андрей VG написал:
разработка заранее предполагала, что кто-то может так порезвиться.
Здравствуйте, коллеги! Не уверен - см. #29
Владимир
 
sokol92,  Владимир, приветствую. Да мы с Андреем про XML.
По вопросам из тем форума, личку не читаю.
 
Так и я, вроде, тоже (про XML в Excel). Очень интересный XML получается, если сохранить файл, обработанный макросом из #29.
Владимир
 
ну так это посимвольное преобразование, что вариант от Александра докрученный мной до форматирования группы символов, что вариант Андрея с регулярками, что мой по его стопам но через split , нормально форматирует.
По вопросам из тем форума, личку не читаю.
 
Да, вы с XML аккуратнее обходитесь, чем разработчики любимой программы.
Изменено: sokol92 - 17.02.2019 20:43:50
Владимир
 
Цитата
sokol92 написал:
Да, вы с XML аккуратнее обходитесь,
Андрей - да. Я - крошу нещадно.
По вопросам из тем форума, личку не читаю.
Страницы: Пред. 1 2
Наверх