Страницы: 1
RSS
Удаление/замена html тегов в ячейках
 
привет! подскажите пожалуйста как сделать массовую "чистку в ячейках" ...есть файл выгрузки из интернет-магазина, его нужно подготовить для импорта в яндекс маркет, по требованиям Маркета можно оставить только теги: <h1><ul>[*]<p><br>

как в столбце description (AE) убрать лишние html теги - style, class, div, span, strong... сохранив при этом стандартное форматирование - переносы строк, списки и выделения заголовков как на скриншоте

пытался копировать ячейки в notepad++ и через регулярные выражения делать замены, но удаляется не только то что не нужно  :sceptic:  или руки кривые или одно из двух :D  
 
Этот макрос за секунду уберет все атрибуты в тегах

Код
Sub ЧисткаHTML()
    Dim cell As Range
    For Each cell In ActiveSheet.UsedRange.Columns(31).Cells
        cell = HTML_DeleteAttributes(cell)
    Next cell
End Sub

Function HTML_DeleteAttributes(ByVal txt$)
    On Error Resume Next
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "(<[A-Za-z1-6]+)[^<>]*(>)"
        txt$ = .Replace(txt$, "$1$2")
        .Pattern = ">\s*<"
        txt$ = .Replace(txt$, "><")
    End With
    HTML_DeleteAttributes = txt$
End Function


Останется только удалить лишние пустые теги
 
Я бы сделал вот как:
1) применил макрос из поста выше для очистки тегов от атрибутов
2) заменил бы РАЗРЕШЕННЫЕ теги на какой-то специфический текст, например, меняем <h1> на ЖНУПИМЫКЕ,
не забывая заменить обратные теги типа </h1> на IURJHWK72
3) преобразовываем HTML в текст, - все лишние теги исчезают
4) делаем обратные замены, восстанавливая нужные теги, - меняем все ЖНУПИМЫКЕ на <h1> и т.д.
 
спасибо огромное Игорь, в принципе макроса было достаточно, остальное вручную доработаю! как вы таким макросы пишете? это скрипты какие то или вручную набираете весь код!?
 
Цитата
Игорь написал:
Останется только удалить лишние пустые теги
хороший код
а как сделать что он удалял все содержимое скобок < >
а вместо них ставил пробел
 
и скобки тоже
 
Ctrl+H
<*> заменить на ничего

Не?
 
Или так:
Код
Sub skobki()
Selection.Replace What:="<*>", Replacement:=""
End Sub
Только сначала выделить весь диапазон, где могут быть <текст....>
 
_Igor_61, спасибо
 
А как и что в этом макросе прописать, чтоб внутри тегов оставались неудаленными colspan  и rowspan и их значения?

Например:
из этого тега <td style=width:115.55pt,border:solid windowtext 1.0pt, mso-border-alt:solid windowtext .5pt,padding:0cm 5.4pt 0cm 5.4pt rowspan=2 width=154 valign=top> должно остаться <td rowspan=2>.

Причем может быть и такая ситуация, что присутствует и colspan:

<td colspan=3 style=width:115.55pt,border:solid windowtext 1.0pt, mso-border-alt:solid windowtext .5pt,padding:0cm 5.4pt 0cm 5.4pt rowspan=2 width=154 valign=top>.
А на выходе должно получиться так:
<td colspan=3 rowspan=2>

Причем необходимо учесть, что значения могут быть разными - от 2 до 12 (как rowspan, так colspan).
 
Доброе время суток.
Цитата
dsg написал:
А как и что в этом макросе прописать
Полагаю, что для этого нужно создать отдельную тему.
 
Андрей VG, я думаю что в макросе, который опубликовал выше Игорь, нужно просто добавить исключения, а может прописать еще  одну строку с этими исключениями. И будет понятно по ходу чтения данной темы, как делать исключения для определенных значений при удалении.
Не хотел множить темы, но если уж не ответят - тогда создам новую :)
 
Цитата
dsg написал: нужно просто добавить исключения
Анализ текста регулярными выражениями (RegExp) в Excel
Согласие есть продукт при полном непротивлении сторон
 
Цитата
dsg написал:
Не хотел множить темы
Основной смысл форума не в том, чтобы не множить темы, а в том чтобы по запросу находить существующие решения. Так как бы звучит не явное правило форума. Поэтому в правилах и прописано про: один вопрос - одна тема, о конкретности вопроса.
 
Забыл прикрепить файл. Пример одной позиции,  в которой надо почистить лишний "мусор" в тегах прикрепляю.
 
Андрей VG, я понял.  
 
Добрый день, помогите разобраться... запустил макрос, но он не почистил выгрузку от html стилей. Подскажите, как очистить от лишнего...
вот пример таблицы...
 
Приложите файл с макросом, про который пишете, что он не чистит.
 
_Igor_61,  попробовал этот макрос который выложил Игорь

Sub ЧисткаHTML()
   Dim cell As Range
   For Each cell In ActiveSheet.UsedRange.Columns(31).Cells
       cell = HTML_DeleteAttributes(cell)
   Next cell
End Sub

Function HTML_DeleteAttributes(ByVal txt$)
   On Error Resume Next
   With CreateObject("VBScript.RegExp")
       .Global = True
       .Pattern = "(<[A-Za-z1-6]+)[^<>]*(>)"
       txt$ = .Replace(txt$, "$1$2")
       .Pattern = ">\s*<"
       txt$ = .Replace(txt$, "><")
   End With
   HTML_DeleteAttributes = txt$
End Function
Страницы: 1
Наверх