Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330

Поиск фрагментов html

29.11.2017, 07:44. Показов 2028. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, как в поиске вводить в коде, найти:
--></ span>

<!--
я пробовал так
"--[/>][/<]/ span[/>]Chr(13)Chr(13)[/<]!--" - не взлетело, спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2017, 07:44
Ответы с готовыми решениями:

Поиск фрагментов текста в ячейке по строке
Добрый день. Не могу решить задачку:) Помогите пожалуйста. Есть текст в ячейках В, С, D, Е. Нужно найти его фрагменты в ячейке F. Если...

Поиск фрагментов текста в ячейке с использованием макросов
Добрый день! Нужна Ваша помощь. Видела похожие темы, но все равно не получилось сделать. Дана таблица. По столбцам перечислены стадии...

Вывод фрагментов из HTML документа
Здравствуйте. Столкнулся с такой ситуацией что нужно вывести из HTML документа в отдельный файл текст, но не знаю как это сделать в силу...

19
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2017, 08:38
Лучший ответ Сообщение было отмечено Ципихович Эндрю как решение

Решение

Ципихович Эндрю, --></ span>^p^p<!-- без подстановочных знаков.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
29.11.2017, 08:50  [ТС]
спасибо, ещё не подскажите, чтобы не делать выделение в инструкции
Visual Basic
1
2
3
Do While .Execute = True 
                        'выделить найденное
                        R.Select
что я делаю для того, чтобы узнать цвет выделенного, шрифт, размер
можно это сделать не выделяя? я так понимаю создавать объект, но сколько не пробовал не получается, или как уйти от выделения? спасибо
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2017, 09:27
Ципихович Эндрю, .Execute относится к R.Find, насколько я понимаю? Тогда это одинаково - выделить R и работать с Selection или работать с R.
Visual Basic
1
2
Do While .Execute '= True
  Debug.Print R.Font.Name, R.Font.Size
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
29.11.2017, 10:22  [ТС]
спасибо, и скорость увеличится?

Добавлено через 28 минут
спасибо, шоколадно, работает
Visual Basic
1
If Len(R) < 110 Then R.Font.Color = wdColorTeal
спасибо

Добавлено через 21 минуту
ещё нюанс, я ещё выделяю найденное, чтобы вместо выделенного что-то вписать, то есть правильно понял, что это не получится? пробовал так:
Visual Basic
1
2
3
4
5
6
  Do While .Execute = True
                'выделить найденное
                'R.Select
                R = "st11"
                .Replacement.Text = "st11"
            Loop
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2017, 11:02
Это получится:
Visual Basic
1
R = "st11"
Это
Visual Basic
1
.Replacement.Text = "st11"
сработает только при следующем проходе цикла, и для этого еще надо указать
Visual Basic
1
While .Execute(Replace:=wdReplaceOne)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
29.11.2017, 15:08  [ТС]
Цитата Сообщение от Казанский Посмотреть сообщение
Это получится:
R = "st11"
я ж пробовал, попробую ещё раз

Добавлено через 3 минуты
ну не взлетело:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
   Set R = ActiveDocument.Range
 
    With R.Find
        'ищем
        .Text = "Примечание"
        Do While .Execute = True
            'выделить найденное
            'R.Select
            R = "st11"
            '.Replacement.Text = "st11"
        Loop
Добавлено через 3 часа 46 минут
апну
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну не взлетело:
что делаю не так? спасибо
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2017, 15:40
Ципихович Эндрю, в чем конкретно проблема - не находит? не заменяет?
Включи R.Select до и после R = "st11", пройди по шагам.
Без файла, в котором проблема воспроизводится, говорить больше не о чем.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
29.11.2017, 17:24  [ТС]
находит, но не заменяет, файл приложил
Вложения
Тип файла: doc Примечание.doc (28.5 Кб, 5 просмотров)
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2017, 18:36
Ципихович Эндрю, Семен Семеныч!...(с)
Если r не объявить (как в примере), то оператор
Visual Basic
1
r = "st11"
присваивает переменной r строковое значение "st11"
Поиск потом продолжается, и в каждом цикле опять происходит присвоение.
В общем, или объявить
Visual Basic
1
Dim r As Range
или явно писать
Visual Basic
1
r.Text = "st11"
ИМХО лучше сделать и то, и то.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
30.11.2017, 09:28  [ТС]
Ваша правда, код работает
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   Dim r As Range
 
    Set r = ActiveDocument.Range
 
    With r.Find
        'ищем
        .Text = "Примечание"
        Do While .Execute = True
            'выделить найденное
            'r.Select
            r.Text = "st11"
            'r.Select
        Loop
    End With
но если в документе будет два слова Примечание то почему-то делает только один проход в цикле, второй не делает, почему?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
30.11.2017, 09:52
Ципихович Эндрю, надо схлопнуть r. После вставки r ссылается на "st11", и искомый текст в нем не находится.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim r As Range
  Set r = ActiveDocument.Range
 
  With r.Find
  'ищем
    .Text = "Примечание"
    .Forward = True             'на всякий случай
    Do While .Execute = True
  'выделить найденное
'      r.Select
      r = "st11"
      r.Collapse wdCollapseEnd  '!
'      r.Select
  '.Replacement.Text = "st11"
    Loop
  End With
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
30.11.2017, 15:19  [ТС]
прилагаю документ, где вместо искомого вставляет нужное, остальное всё под чистую удаляет, вау, почему так??
Вложения
Тип файла: rar 1111111111.rar (21.5 Кб, 7 просмотров)
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
01.12.2017, 00:30
Ципихович Эндрю,
Visual Basic
1
2
3
4
5
6
7
    Set R = ActiveDocument.Range
 
    With ActiveDocument.Range.Find 'откуда это взялось вместо With R.Find ?!
'...
        Do While .Execute = True
'...
            R = "либо исправительными работами на срок от одного года до двух лет, либо принудительными работами на срок до пяти лет, либо лишением свободы на тот же срок."
То есть R ссылается на весь диапазон документа, мы что-то находим (не меняя R), заменяем весь диапазон документа на указанную фразу.
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
01.12.2017, 09:45  [ТС]
ок спасибо, если я не убиваю нигде в коде объект строкой Set R = Nothing
то опытным путём пришёл к выводу, что лучше объявлять
Цитата Сообщение от Казанский Посмотреть сообщение
Set R = ActiveDocument.Range
перед каждым блоком поиска, это нормально? спасибо
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
01.12.2017, 11:10
Ципихович Эндрю, да, нормально. Потому что каждый успешный .Execute меняет R на найденный фрагмент.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
02.12.2017, 09:49  [ТС]
спасибо, я то думал, что мир перевернулся, а оказывается)))
Цитата Сообщение от Казанский Посмотреть сообщение
да, нормально. Потому что каждый успешный .Execute меняет R на найденный фрагмент
Добавлено через 7 минут
вау, даже размер и цвет шрифта можно указывать
Visual Basic
1
2
 .Font.Color = wdColorBlack
        .Font.Size = 10
аппетит приходит во время еды

Добавлено через 21 час 58 минут
здравствуйте, не пойму почему эти строки кода:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    Dim R As Range
 
    'цвет текста чёрный цвет
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.ColorIndex = wdBlack
 
    'заменяем три абзаца на абзац
    Set R = ActiveDocument.Range
    With R.Find
        'эта опция отвечает за поиск с использованием подстановочных знаков
        'не работает когда установлено в положение False, или её нет вообще
        'если установлена в положение True, тогда работает
        .MatchWildcards = True
        'ищем
        .Text = "^13^13^13"
        .Forward = True
        .Replacement.Text = "^13"
        'свойство Wrap (Поворачивать, Заворачивать) определяет поведение поиска при достижении конца документа, wdFindContinue (ПоискПродолжать)
        .Wrap = wdFindContinue
        R.Collapse wdCollapseEnd
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
заменяют не как указано три следующих друг за другом абзаца а любой абзац на <br />абзац
спасибо

Добавлено через 2 минуты
предположение только в том, что Do While и Selection.Find.Execute Replace:=wdReplaceAll работают по разному..., хотя стоп

Добавлено через 6 минут
переделал код на:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    Dim R As Range
 
    'цвет текста чёрный цвет
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.ColorIndex = wdBlack
 
    'заменяем три абзаца на абзац
    Set R = ActiveDocument.Range
    With R.Find
        'эта опция отвечает за поиск с использованием подстановочных знаков
        'не работает когда установлено в положение False, или её нет вообще
        'если установлена в положение True, тогда работает
        .MatchWildcards = True
        'ищем
        .Text = "^13^13^13"
        .Forward = True
        .Replacement.Text = "^13"
        'свойство Wrap (Поворачивать, Заворачивать) определяет поведение поиска при достижении конца документа, wdFindContinue (ПоискПродолжать)
        .Wrap = wdFindContinue
        R.Collapse wdCollapseEnd
        .Execute Replace:=wdReplaceAll
    End With
не заменяет .Text = "^13^13^13" на .Replacement.Text = "^13"
подскажите пожалуйста, что я делаю не так?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
09.12.2017, 18:58  [ТС]
здравствуйте и ещё у меня возник затык
в строках кода
почему то несколько последних текстов .Text = "[\<]checkboxpunkt>* " не ищет начиная с <checkboxpunkt>м) , думал, что не пересчитывается endPos после вставки текстов, но проверил всё нормально, пересчитывается, в чём может быть проблема?
файл приложил, спасибо
Вложения
Тип файла: rar ФЗ.rar (59.4 Кб, 3 просмотров)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
10.12.2017, 01:33  [ТС]
апну тему, не знаю, смотрел ли уже кто-то файл или нет, но я его перезалил, убрал и лишний текст и лишний код
погонял код и понял, что тупо найти текст находит все совпадения, а если найти и заменить на что-то то видимо количество текста увеличивается и размер закладки в которой ищем не пересчитывается, в то же время endPos увеличивается, гуру посмотрите пожалуйста, спасибо
Вложения
Тип файла: rar ФЗ.rar (28.4 Кб, 4 просмотров)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
10.12.2017, 20:01  [ТС]
апну тему, если кому в лом файл смотреть, вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Обработка()
    Dim endPos As Long
    Dim R As Range
    With ActiveDocument.Bookmarks(ActiveDocument.Range.Bookmarks(1).Name)
        If .Range Like "*checkboxpunkt*" Then
            Set R = .Range
            endPos = .End
            With R.Find
                .MatchWildcards = True
                .Text = "[\<]checkboxpunkt>* "
                .Forward = True
                Do While .Execute = True And R.End <= endPos
                    Debug.Print R.End
                    'R.Select
                    R.Text = "<span class=""punkt"" data-st=data-ch=data-pt=)<span class=""punkt"" data-st=data-ch=data-pt=)<span class=""punkt"" data-st=data-ch=data-pt=)<span class=""punkt"" data-st=data-ch=data-pt=)<span class=""punkt"" data-st=data-ch=data-pt=)<span class=""punkt"" data-st=data-ch=data-pt=)"
                    R.Collapse wdCollapseEnd
                Loop
            End With
        End If
    End With
    MsgBox "11"
    '
End Sub
почему в содержимом закладки не у всех совпадений иского делает замены? спс

Добавлено через 3 часа 31 минуту
выход нашёл, после строки Loop указать и отправить на последующие круги выполнять поиск, но по моему это как то не правильно?
Visual Basic
1
 If ActiveDocument.Bookmarks(ActiveDocument.Range.Bookmarks(1).Name).Range Like "*checkboxpunkt*" Then GoTo Back
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2017, 20:01
Помогаю со студенческими работами здесь

Оптимальный поиск фрагментов по массиву
Задам свой вопрос на примере: имеется массив: $words = array('as', 'asd', 'asdf', 'asdfg', 'sdf', 'dfg', 'adf', 'sdg', 'gsd', 'rsdr'); ...

Поиск фрагментов текста в ячейке
Добрый день! Помогите решить задачу. Дана таблица. В первом столбце наименования, содержащие одни и те же слова, но записаны по разному....

Поиск фрагментов текста в ячейке
Помогите, пожалуйста, прописать формулу. Видела похожие обращения к Вам за помощью, но что-то у меня не выходит сделать самостоятельно....

Поиск фрагментов текста в ячейке
Добрый день! Нужна Ваша помощь. Видела похожие темы, но все равно не получилось сделать. Дана таблица. По столбцам перечислены стадии...

Поиск фрагментов в двух файлах
Есть первый текстовик, в котором содержится кучи названий по типу &quot;xyz&quot; (в ковычках) Есть второй текстовик, в нём указаны номера этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru