Имеется прайс лист. В столбце "описание товара" - текст. Часть текста обернута в метатэги со стилями. Некоторые метатэги нужно полностью убрать, у других - только удалить стили.
Описанное выше делаю в Notepad++ поиском и заменой по регулярным выражениям, но приходится каждое выражение вводить вручную + Notepad++ нарушает файла и в последующем он открывается с испорченным текстом.
Также пробовал выполнять замену по регулярным выражениям в самом экселе с помощью надстройки SEO Excel, где предусмотрена такая замена, но она не работает, когда я пытаюсь обработать с ее помощью весь файл с количеством строк более 5 000.
Прошу помочь с написанием макроса для массовой замены по списку регулярных выражений. Будет замечательно, если в макрос будет возможно добавить еще и замену по списку не регулярных выражений (закрывающих тэгов в моем случае).
Привожу список регулярных выражений, которые я удалял с помощью Notepad++.
Удаляю следующие тэги со стилями внутри (например <div style="xxx">):
Заменяю тэги со стилями, на тэги без стилей (например <p style="xxx"> на <p>):
(?=<p).*?(?<=>) НА <p> (?=<strong).*?(?<=>) НА <strong> (?=<br).*?(?<=>) НА <br> (?=<b).*?(?<=>) НА <b> (?=<table).*?(?<=>) НА <table> (?=<td).*?(?<=>) НА <td> (?=<th).*?(?<=>) НА <th> (?=<li).*?(?<=>) НА <li> (?=<tr).*?(?<=>) НА <tr> (?=<tbody).*?(?<=>) НА <tbody> (?=<h3).*?(?<=>) НА <h3> (?=<ul).*?(?<=>) НА <ul>
Удаляю закрывающие тэги (не выражения, просто текст):
</span> </div> </em> </font> </style> </a> </u>
ЕЩЕ до замены по регулярным выражениям, заменяю следующий текст на символы в таблице (без чего тэги не отображаются):
" на " > на > < на <
Имеется прайс лист. В столбце "описание товара" - текст. Часть текста обернута в метатэги со стилями. Некоторые метатэги нужно полностью убрать, у других - только удалить стили.
Описанное выше делаю в Notepad++ поиском и заменой по регулярным выражениям, но приходится каждое выражение вводить вручную + Notepad++ нарушает файла и в последующем он открывается с испорченным текстом.
Также пробовал выполнять замену по регулярным выражениям в самом экселе с помощью надстройки SEO Excel, где предусмотрена такая замена, но она не работает, когда я пытаюсь обработать с ее помощью весь файл с количеством строк более 5 000.
Прошу помочь с написанием макроса для массовой замены по списку регулярных выражений. Будет замечательно, если в макрос будет возможно добавить еще и замену по списку не регулярных выражений (закрывающих тэгов в моем случае).
Привожу список регулярных выражений, которые я удалял с помощью Notepad++.
Удаляю следующие тэги со стилями внутри (например <div style="xxx">):
Заменяю тэги со стилями, на тэги без стилей (например <p style="xxx"> на <p>):
(?=<p).*?(?<=>) НА <p> (?=<strong).*?(?<=>) НА <strong> (?=<br).*?(?<=>) НА <br> (?=<b).*?(?<=>) НА <b> (?=<table).*?(?<=>) НА <table> (?=<td).*?(?<=>) НА <td> (?=<th).*?(?<=>) НА <th> (?=<li).*?(?<=>) НА <li> (?=<tr).*?(?<=>) НА <tr> (?=<tbody).*?(?<=>) НА <tbody> (?=<h3).*?(?<=>) НА <h3> (?=<ul).*?(?<=>) НА <ul>
Удаляю закрывающие тэги (не выражения, просто текст):
</span> </div> </em> </font> </style> </a> </u>
ЕЩЕ до замены по регулярным выражениям, заменяю следующий текст на символы в таблице (без чего тэги не отображаются):
не понятно: приложен прайс лист или что надо получить? Обычно для решения вопроса прилагают файл источник (оригинал) и файл что надо получить. И желательно с описанием в каждой строке что на что менялось А потом можно сделать список замен на листе (и этот список можно будет редактировать). И вот тогда уже можно говорить о макросе. А так лично мне объяснения не понятны.
так же понятны эти замены " на " > на > < на < возможно сайт внёс свои поправки
Цитата
Имеется прайс лист
не понятно: приложен прайс лист или что надо получить? Обычно для решения вопроса прилагают файл источник (оригинал) и файл что надо получить. И желательно с описанием в каждой строке что на что менялось А потом можно сделать список замен на листе (и этот список можно будет редактировать). И вот тогда уже можно говорить о макросе. А так лично мне объяснения не понятны.
так же понятны эти замены " на " > на > < на < возможно сайт внёс свои поправкиalex77755
Могу помочь в VB6, VBA Alex77755@mail.ru
Сообщение отредактировал alex77755 - Суббота, 18.08.2018, 06:00
Sub dd() Const dic$ = ":"="":<=<:>=>: =:"="":" Const pattern$ = "(?:<\/?(?:span|div|a|img|style|font|em|wbr|u)" & _ ".*?>(?:\s*\n\s*)*)|(?:(?:(<)([pb]r*|strong|t[abdhr]{1,2}" & _ "(?:le|ody)*|u*li*|h[0-9]*)\s.*?(?=\/*>))|(\S+))(?=[\s\S]*:" & _ "(?:\1|\3)=(:|.*?):)|(?:(\n)\s*)+" Dim arr() As Variant,i& With [Было!A1].CurrentRegion.Columns(3) If .Cells.Count < 2 Then Exit Sub arr = .Value For i = LBound(arr) + 1 To UBound(arr) arr(i, 1) = arr(i, 1) & dic With CreateObject("vbscript.regexp") .Global = True: .MultiLine = True .Pattern = pattern If .test(arr(i, 1)) Then arr(i, 1) = Replace(.Replace(arr(i, 1), "$4$2$5"), dic, "") End If End With Next .Value = arr End With End Sub
[/vba] [p.s.]Pattern и строка-"словарь" искаверканы сайтом, правильные в файле
Sub dd() Const dic$ = ":"="":<=<:>=>: =:"="":" Const pattern$ = "(?:<\/?(?:span|div|a|img|style|font|em|wbr|u)" & _ ".*?>(?:\s*\n\s*)*)|(?:(?:(<)([pb]r*|strong|t[abdhr]{1,2}" & _ "(?:le|ody)*|u*li*|h[0-9]*)\s.*?(?=\/*>))|(\S+))(?=[\s\S]*:" & _ "(?:\1|\3)=(:|.*?):)|(?:(\n)\s*)+" Dim arr() As Variant,i& With [Было!A1].CurrentRegion.Columns(3) If .Cells.Count < 2 Then Exit Sub arr = .Value For i = LBound(arr) + 1 To UBound(arr) arr(i, 1) = arr(i, 1) & dic With CreateObject("vbscript.regexp") .Global = True: .MultiLine = True .Pattern = pattern If .test(arr(i, 1)) Then arr(i, 1) = Replace(.Replace(arr(i, 1), "$4$2$5"), dic, "") End If End With Next .Value = arr End With End Sub
[/vba] [p.s.]Pattern и строка-"словарь" искаверканы сайтом, правильные в файлеkrosav4ig