Страницы: 1
RSS
Заменить тег p на h1
 
В общем, в ячейке находится текст оформленный тэгами

</p>. Нужна функция для замены тэгов в строке начинающейся со слова "Статья" на <h1></h1>. Пример:  
 
<p>Статья 15. Собственность на землю граждан и юридических лиц

1. Собственностью граждан и юридических лиц

2. Граждане и юридические лица имеют право

 
Спасибо!
 
http://www.planetaexcel.ru/forum.php?thread_id=8735
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
мышкой выделите ячейки с текстом и запустите  
 
 
Sub ReplaceTags()  
Dim Rng As Range, iCell As Range  
   If Selection.Cells.Count = 1 Then  
       MsgBox "Выделите диапазон ячеек с текстом!", vbExclamation, "Ошибка"  
       Exit Sub  
   End If  
   Set Rng = Selection.Cells  
   Application.ScreenUpdating = False  
   For Each iCell In Rng  
       If Mid(iCell, 4, 6) = "Статья" Then  
           iCell = Replace(iCell.Text, "

", "<h1>")  
           iCell = Replace(iCell.Text, "

", "</h1>")  
       End If  
   Next iCell  
   Application.ScreenUpdating = True  
   MsgBox "Теги заменены!", vbInformation, "Конец"  
End Sub
 
Спасибо, но сознаюсь, задачу я описал не достаточно корректно..    
Суть в том, что значение ячейки получено вставкой ч-з строку формул содержимого из текстового файла.  
Сам текстовый файл исходно представлял собой простой текст с тэгом переноса строки <br />. Этот тег во всем тексте заменялся на тэги абзацев

</p>    
В итоге, в браузере содержимое ячейки А2 отображается с разбивкой на абзацы а в экселе как одно длинное предложение?. Задача - выделить название статей тегами заголовков - т.е. нужна функция которая бы находила абзац начинающийся со слова "Статья" и заменяла его теги на h1.  
Проблема в том что искать получается нужно не слово "Статья" в начале строки а такие конструкции как:  
Общие положения

<p>Статья 15  
Понятнее будет в примере..
 
vveco, у вас, вроде, уже 46 сообщений на форуме, а так Правила форума так и не прочитали ни разу, а ссылку вам, думаю, уже 100 раз давали.    
Вот вы будите посещать на форум ещё пару лет и все пару лет будите писать "ой, я неправильно выразился, вы зря потратили на меня 30 минут и ваш макрос не работает, сейчас приложу файл, т.к. сперва мне было лень это делать, но файл будет с форматом Excel 2007 (*.xlsm), это не важно, что в Правилах написано стараться выкладывать файлы в формате Excel 2003 (*.xls), мне не до Правил сейчас, у меня глобальная проблема, которую срочно нужно решить", так?
 
{quote}{login=vveco}{date=28.01.2012 05:41}{thema=}{post}Спасибо, но сознаюсь, задачу я описал не достаточно корректно...{/post}{/quote}  
Сознавайтесь далее - с какого боку EXCEL во всей этой вашей заморочке?!! Тогда как в куче все: cvs, xlm, txt, doc и пр. пр...
 
Добавил совсем чуть-чуть...  
 
 
Sub ReplaceTags()  
'  
' Макрос1 Макрос  
' Замена тегов

</p> на <h1></h1>  
'  
' Сочетание клавиш: Ctrl+я  
'  
   Dim Rng As Range, iCell As Range, a, i&  
   If Selection.Cells.Count = 1 Then  
       MsgBox "Выделите диапазон ячеек с текстом!", vbExclamation, "Ошибка"  
       Exit Sub  
   End If  
   Set Rng = Selection.Cells  
   Application.ScreenUpdating = False  
   For Each iCell In Rng  
       a = Split(iCell.Value, "

")  
       For i = 0 To UBound(a)  
           If Mid(a(i), 4, 6) = "Статья" Then  
               a(i) = Replace(a(i), "

", "<h1>")  
               a(i) = a(i) & "</h1>"  
           Else  
               a(i) = a(i) & "

"  
           End If  
       Next  
       iCell.Value = Join(a)  
   Next  
   Application.ScreenUpdating = True  
   MsgBox "Теги заменены!", vbInformation, "Конец"  
 
End Sub  
 
Но проверьте.
 
Упс, брак копипаста - заменить  
a(i) = a(i) & "</p1>"  
на  
a(i) = a(i) & "</p>"
 
С таким подходом проблем написания стилей (css) не возникает?  
Пример в файле: что есть и что надо.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Ваш макрос работает. Еще раз Вам спасибо!
 
Вот так и работаем... я пишу, Игорь дорабатывает ))) Я не только "ЗА" )))
 
я только "ЗА" ))
 
{quote}  
Сознавайтесь далее - с какого боку EXCEL во всей этой вашей заморочке?!! Тогда как в куче все: cvs, xlm, txt, doc и пр. пр...{/quote}  
Про doc и xml как догадались :) я вроде не писал.    
Все это нужно, в итоге для импорта на сайт ч-з csv. xml там уже не проходит - вместо него json - но с ним ваще труба. поэтому остался старый добрый csv.  
Однако сама методика переноса получилась - один сплошной танец с бубном..    
1. убиваются все теги вставкой в нотепад++  
2. там же заменяются вcе теги <br /> на <p></p>  
3. выделяются заголовки (макросом Hugo)  
4. собирается csv и импортируется в каталог..  
т.е. без экселя - никак. Хотя за совет как сделать проще буду весьма признателен!  
А еще может кто знает как из json получить xls - вот это было бы супер! Простых и рабочих решений увы не нашел.  
 
С css, кстати, никаких проблем
 
Макросом Ластика в редакции Hugo :)
 
Мне кажется, можно всё сделать одним скриптом vbs - т.к. в начале текст, в конце csv, т.е. тоже текст, то всё можно сделать обработкой текста скриптом.  
Другое дело - на сколько сложный скрипт нужен... Но алгоритм замены p на h уже есть :)
 
А че эт за прикол? Или у одного меня?
Я сам - дурнее всякого примера! ...
 
А ну да. Форум проглотил теги:-)
Я сам - дурнее всякого примера! ...
 
Привет, Дим. Меня сбило с толку, что до этого нормально все отображалось. До форума медленно дошло:-)
Я сам - дурнее всякого примера! ...
 
{quote}{login=Hugo}{date=28.01.2012 10:23}{thema=}{post}Мне кажется, можно всё сделать одним скриптом vbs - т.к. в начале текст, в конце csv, т.е. тоже текст, то всё можно сделать обработкой текста скриптом.  
Другое дело - на сколько сложный скрипт нужен... Но алгоритм замены p на h уже есть :){/post}{/quote}  
Если честно, то танцы с бубном продолжаются..  
Во первых выяснилось, что в тексте есть скрытые теги CR LF которые notepad++ хотя и видит в режиме включенных символов, но заменять поиском не хочет. только ручками.  
Во вторых выяснилось, что в ячейку большой объем текста не вставляется :( - ограничение эксель.  
в третьих с самим текстом еще кое какие манипуляции требуются по замене блоков текста..  
В общем, нужна платная доработка в виде всунул файл как есть, получил то что доктор прописал :)
 
vveco, Вы либо не слушаете, либо не хотите слушать: пример в файле, что есть и что надо, который по возможности максимально бы отражал суть проблемы.  
 
 
p.s.: в общем и целом париснг текста задача не тривиальная и достаточно сложная. Все чаще для ее решения использую регулярные выражения. Взять тот же скрипт для подсветки vba кода на мирэксель - http://www.excelworld.ru/forum/5-72-13312-16-1325524132 (на данный момент он не оптимизирован и находится в стадии тестирования). Жаль Николай отказался от моего предложения по поводу Планеты. Было бы интересней читать форум : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Расписал как смог подробно и в примерах что есть и что нужно. Если решение получится найти, то думаю будет многим полезно.  
Вот ссылка http://zalil.ru/32618612
 
vveco  
Так может ещё выложить пример исходных данных в json (насколько я понял - исходные данные в json?). Судя по описанию json (наличие пар ключ-значение) возможно получится проще разобрать и преобразовать данные в csv?
 
ну.. с json то беда в том что в него как преобразовать - то вариантов масса, а вот из него в тот же csv - ни фига.. ну т.е. чтобы без выноса мозга.  
А вообще идея в том что экспортировав с сайта единичный элемент каталога в json, получаем пример структуры, который если разобрать как, то можно дополнять нужными данными и импортировать обратно.  
Но если просто не получается, то без этого жить можно..    
Примерчик прилагаю
 
хм.. не приложился. вот ссылка  
http://zalil.ru/32619570
 
vveco, на первый взгляд, процесс можно полностью автоматизировать. Что я имею ввиду:  
допустим, в ворде есть текст из гаранта:  
- удалить комментарии гаранта  
- очистить документ от форматирования;  
- заключить текст в нужные Вам теги

текст

, <h1>текст</h1>;  
- удалить пустые строки;  
- добавить столбцы: Дата принятия, номер документа, Название категории, измененения, Категория, Статус (действующий/отменен), дата изменения, глава, описание;  
- заключить нужный вам текст в тильды;  
- сохранить, как csv.  
 
 
Что не понял:  
? - Открываем полученный csv в нотпаде ++ и меняем кодировку на utf-8 без bom. Удаляем поиском все кавычки " добавляем длинные главы..  
? - заменить простые кавычки французскими (это как в ворде?)  
 
Не совсем понятно, зачем удалять главы, чтобы потом их добавлять?  
 
 
Разумеется, бесплатно за реализацию данной затеи не возьмусь. Заинтересует, пишите на мыло.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
1. utf-8 кодировка нужна в выходном файле  
2. кавычки " добавляются при формировании csv фиг знает почему. их просто удалить  
3. французские это такие «» они заменяются функцией  
4. главы не удаляются - из названий глав формируется соответствующий столбец. а проблема в том, что в нужном столбце с содержимым глав, текст больших глав не вставляется в ячейку - знаков больше чем 32767..
Страницы: 1
Читают тему
Loading...