Intereting Posts
Почему браузер изменяет идентификатор HTML-элемента, который содержит & # x? Пользовательская сортировка значений в атрибуте сортировки данных с помощью JQuery Datatables Вручную введите значение в списке «Выбрать» / «Выпадающий список HTML»? Как избежать bootstrap css, переопределяющего пользовательский css? CSS-отрицание псевдоclass: not () для элементов parent / ancestor Акцентированные символы не извлекаются правильно mailto ссылка не работает в chrome extension popup Параметры Url.Action? Какая предпочтительная единица при выполнении адаптивного дизайна? Как я могу сделать div автоматически отрегулировать его высоту между двумя div, в зависимости от высоты windows, используя CSS / Javascript? Dropdownchecboxes выбрал проверку значения в javascript Закрыть tags из укороченной строки HTML Доступ к пользовательской переменной CSS с помощью Javascript Unordered List () default indent Как настроить iframe на весь экран без указания размеров?

VBA для замены Bold Font с html жирным тегами вокруг текста

Я пытаюсь создать макрос Excel VBA, чтобы найти полужирный текст и добавить html жирные tags вокруг найденного текста. Пример: Найти: «Это жирное слово» и «Заменить с помощью»: «Это bold слово» (оба html- bold и слово должны быть полужирным)

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

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

Нашел этот сайт, который кажется близким, но я не могу заставить макрос работать. Проблема с «ActiveDocument.Tables (1) .Select» и .Wrap = wdFindStop http://www.ozgrid.com/forum/showthread.php?t=57419

Я также нашел сайт, который может помочь мне найти / заменить текст, не теряя смелого форматирования, но все же не совсем то, что мне нужно. Это также может быть излишним для того, что я ищу, чтобы сделать https://www.mrexcel.com/forum/excel-questions/524889-find-replace-loses-text-properties-formatting.html

Кажется, я не могу найти гораздо больше онлайн для этой проблемы. Может быть, это сложнее, чем я думал?

У меня что-то в работе …

 Sub removeboldaddHtml() lastrow = Range("A1").End(xlDown).Row For i = 1 To lastrow msg = "" For j = 1 To Len(Cells(i, 1)) If Range("A" & i).Characters(j, 1).Font.Bold = True Then msg = msg & Mid(Cells(i, 1), j, 1) End If Next j ' next character If msg  "" Then Cells(i, "B").Value = "" & msg & "" End If Next i ' next row End Sub 

Следующий код является довольно грубым, неэлегантным и ресурсоемким. Но может помочь в любом случае (для первой части вашего вопроса). Он будет работать, только если жирный шрифт будет непрерывным (это не сработает для чего-то подобного ). Данные находятся в листе «Sheet1», столбец A (только строки с 1 по 3 в следующем коде). Отредактировано для получения тегов и текста между тегами, выделенными полужирным шрифтом.

 Private Sub CommandButton1_Click() Dim MyStringLength As Integer Dim OriginalString As String Dim MyRow As Long Dim StartPos As Integer Dim EndPos As Integer For MyRow = 1 To 3 'Adjust to your row number StartPos = 0 EndPos = 0 MyStringLenght = Len(Worksheets("Sheet1").Cells(MyRow, 1)) For i = 1 To MyStringLenght If Worksheets("Sheet1").Cells(MyRow, 1).Characters(i, 1).Font.Bold = True Then If StartPos = 0 Then StartPos = i End If EndPos = i End If Next OriginalString = Worksheets("Sheet1").Cells(MyRow, 1) Worksheets("Sheet1").Cells(MyRow, 2) = StartPos Worksheets("Sheet1").Cells(MyRow, 3) = EndPos Worksheets("Sheet1").Cells(MyRow, 4) = Left(OriginalString, StartPos - 1) & "" & Mid(OriginalString, StartPos, EndPos - StartPos + 1) & "" & Right(OriginalString, MyStringLenght - EndPos) Worksheets("Sheet1").Cells(MyRow, 4).Characters(StartPos, EndPos - StartPos + 7).Font.Bold = True Next End Sub 

Пример добавления тегов:

 Sub Tester() AddTags Range("A1") End Sub Sub AddTags(c As Range) Dim p As Long, isB As Boolean Do p = p + 1 If p > Len(c.Value) Then Exit Do If c.Characters(p, 1).Font.Bold And Not isB Then 'entering a bolded section c.Characters(p, 0).Insert "" c.Characters(p, 3).Font.Bold = True isB = True p = p + 3 'skip the tag you just added ElseIf Not c.Characters(p, 1).Font.Bold And isB Then 'leaving a bolded section c.Characters(p, 0).Insert "" c.Characters(p, 4).Font.Bold = True isB = False p = p + 4 'skip the tag you just added End If Loop 'close any open tag If isB Then c.Characters(p, 0).Insert "" End Sub