powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Find с конца текста
44 сообщений из 44, показаны все 2 страниц
Find с конца текста
    #37242523
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как Финдом при помощи ВБА делаем поиск в Ворде с конца к началу документа, спасибо
...
Рейтинг: 0 / 0
Find с конца текста
    #37242531
Ципихович Эндрю,
пример из справки VBA (Word):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
' The following example searches backward through the document for the word "Microsoft." If the word is found, it's automatically selected.

Selection.Collapse Direction:=wdCollapseStart
With Selection.Find
    .Forward = False
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Microsoft"
End With


Покупайтенаших слонов!(с)
Читайте справку - источник знаний.
...
Рейтинг: 0 / 0
Find с конца текста
    #37242548
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

не понял юмора:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
'пример поиска в обратном направлении в документе слова "Microsoft"
'если слово найдено, оно выделяется
'Selection     Collapse     Direction
'Выбор         Свернуть     Направление
Selection.Collapse Direction:=wdCollapseStart
With Selection.Find
    'Forward - Переслать
    .Forward = True 'False
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Microsoft"
End With

Forward = False
или
Forward = True
выделяет первое слово
...
Рейтинг: 0 / 0
Find с конца текста
    #37242549
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

ну въехал, надо Selection.Collapse Direction:=wdCollapseEnd
А зачем строку .Forward = False выделели и что она даёт при фальше и при труе
...
Рейтинг: 0 / 0
Find с конца текста
    #37242559
Ципихович Эндрюну въехал, надо Selection.Collapse Direction:=wdCollapseEndЕсли верить Майкрософту, то не надо (пример привёл "один-в-один", единственное, что себе позволил - выделить цветом строку).


Код: plaintext
1.
2.
' .Forward = True ' поиск "вперёд"
' .Forward = False ' поиск "назад"

ОФФ: Ворд нашёлся ? :)
...
Рейтинг: 0 / 0
Find с конца текста
    #37242574
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, спасибо он у меня и не терялся, просто он глючный, долго рассказывать, кое что пропускает, кое что нет, совсем другая история, лучше не рассказывать - на два десятка топиков хватит , скоро собираюсь на 10 ку переходить не могу качнуть руссификатор, не знаете где есть? правда подсказки качнул всплывающие, думаю так и англицкий можно изучить
...
Рейтинг: 0 / 0
Find с конца текста
    #37242595
Ципихович Эндрюскоро собираюсь на 10 ку переходить не могу качнуть руссификатор, не знаете где есть?Не заню.
ЗЫ: а зачем русификатор? Покупаете RU, и не мучаете себе мозг.
...
Рейтинг: 0 / 0
Find с конца текста
    #37242600
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, уже добрые люди подарили
...
Рейтинг: 0 / 0
Find с конца текста
    #37242691
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указываю в поиске
'ищем слово "Сут" строго согласно регистра букв
'за ним пробел, за ним любое количество знаков - "*", за ними точка и пробел
.Text = "Сут *. "
жду что выделит «Сут 360. »
Но выделяет не то, а больше
Сут 360. Ныавыавымавыававыавыавыпадение
2. Т
почему???
...
Рейтинг: 0 / 0
Find с конца текста
    #37242702
Ципихович Эндрю,
потому что алгоритм поиска жадный .
...
Рейтинг: 0 / 0
Find с конца текста
    #37242717
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, у меня не было регулярных выражений, обычный Вордовский поиск, то есть Вордом всегда жадность будет? Намекаете регулярки использовать, опять же тогда как с конца??
...
Рейтинг: 0 / 0
Find с конца текста
    #37242730
Сижу, никого не трогаю, примус починяю(с). Ни на что я не намекаю.

Ципихович Эндрюу меня не было регулярных выражений, обычный Вордовский поискУ "обычного Вордовский поиска" были.

ЗЫ: Вордовский поиск с использованием подстановочных знаков и направлении поиска "вперёд" ведёт себя как "не жадный".
Чем дальше, тем страннее(с)
...
Рейтинг: 0 / 0
Find с конца текста
    #37242737
Ципихович Эндрю,
попробуйте в качестве шаблона. Не факт, что поможет.
Код: plaintext
.Text = "<Сут[!.]@. "
...
Рейтинг: 0 / 0
Find с конца текста
    #37242763
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, ОК!!, спасибо взял на NB
...
Рейтинг: 0 / 0
Find с конца текста
    #37242770
Ципихович Эндрю,
оно хоть работает?
...
Рейтинг: 0 / 0
Find с конца текста
    #37242772
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, ну конечно, работает!! я в шоколаде
...
Рейтинг: 0 / 0
Find с конца текста
    #37243458
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюскоро собираюсь на 10 ку переходить не могу качнуть руссификатор, не знаете где есть?
Эндрю!
Останьтесь на 2003-м (Office11) - будет менее проблематично. Ибо вы даже вы не удосужились еще изучить объектную схему от 10, а лОмитесь на 13 (а там придется перечитать ВЕСЬ хелп заново)...
...
Рейтинг: 0 / 0
Find с конца текста
    #37243535
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

а он не будет читать, он писать будет. Сюда.
...
Рейтинг: 0 / 0
Find с конца текста
    #37243987
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лОмитесь на 13, неа лОмитесь на 14. Да и ломлюсь я, просто говорю же добрые люди подарили, кстати шоколад сполз у меня опять неувязка, когда есть "Сут 360.1 Ныавыавымавыававыавыавыпадение" надо чтобы выделялось "Сут 360.1 "
но попробую решить сам. Пока помощи не прошу
...
Рейтинг: 0 / 0
Find с конца текста
    #37244360
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо строго в начале слова, строго с большой буквы "Сут"
пробел
любое количество знаков
точка
пробел

Строго первое совпадение с конца документа
Я конечно попробовал, старался, почти тоже самое, что гречку от проса перебирать:
Решил всё же по взрослому сделать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
'искать по всему тексту, если False (по-умолчанию) - будет найдено только первое совпадение
reg.Global = True
'текст, который ищем
'?????????????????????
reg.Pattern = "Сут "
'учитывать регистр символов
reg.IgnoreCase = False
TempStr = ActiveDocument.Range
MsgBox$ TempStr
но увы...Прошу помощи
...
Рейтинг: 0 / 0
Find с конца текста
    #37244559
Ципихович Эндрю,
надо чтобы выделялось "Сут 360.1 "
Мне надо строго в начале слова, строго с большой буквы "Сут"
пробел
любое количество знаков
точка
пробел
Неувязка.
В первой цитате заканчивается на "единица пробел"
Во второй - "точка пробел"
Где правда?
...
Рейтинг: 0 / 0
Find с конца текста
    #37244644
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,
могут быть варианты
Сут 63.1. Назначение
Сут 63. Обстоятельства
то есть строго точка пробел в конце
...
Рейтинг: 0 / 0
Find с конца текста
    #37246212
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осталась одна строка кода: .Pattern = "Сут " - помогите изменить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub Макрос1()
'Tools - References... - Microsoft VBScript - Regular Expressions 5.5
Dim РегВыражения As New VBScript_RegExp_55.RegExp
Dim Текст As String
Dim Найденное As VBScript_RegExp_55.MatchCollection
Текст = ActiveDocument.Range
With РегВыражения
    'искать по всему тексту, если False (по-умолчанию) - будет найдено только первое совпадение
    .Global = True
    'текст, который ищем
    .Pattern = "Сут "
    'учитывать регистр символов
    .IgnoreCase = False
    Set Найденное = .Execute(sourceString:=Текст)
End With
'Вот так можно определить первый с конца найденный элемент.
'(-1, т.к. первый элемент коллекции нумеруется с нуля).
Debug.Print Найденное(Найденное.Count -  1 )
End Sub
...
Рейтинг: 0 / 0
Find с конца текста
    #37246488
Ципихович Эндрю,
может попробуйете ещё раз с "простым вордовским поиском"?
Код: plaintext
.Text = "<Сут [! ]@. "
'Сут' (в начале слова)
'пробел'
'один или более знаков отличных от пробела ' ( несколько сужает Ваше 'любое количество знаков' )
'точка'
'пробел'

ЗЫ: с регулярными выражениями потренируйтесь сами .
ЗЗЫ: RegExp для поиска последнего вхождения будет на больших текстах медленнее вордовского Find "назад".
...
Рейтинг: 0 / 0
Find с конца текста
    #37247830
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, ОК!! работает
попытался я на досуге поизучать регулярки
просо от гречки ....
как на зло надо найти строку "\*MERGEFORMAT"
где между "\" и "*" и "M" может не быть пробелов, может быть несколько пробелов
Больше всего труднсть составляют
знаки используемые в регулярках как служебные - "\" и "*"
Подскажите, пжл
...
Рейтинг: 0 / 0
Find с конца текста
    #37247890
Ципихович Эндрю,
с вордовским поиском только так
.Text = "\*[*]*MERGEFORMAT"
Между '\' '*' 'M' может быть любое кол-во любых знаков

С RegExp можно более точно.
Код: plaintext
.Pattern = "\\ *\* *MEGREFORMAT"
...
Рейтинг: 0 / 0
Find с конца текста
    #37247924
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, спасибо проверить сейчас не смогу до завтра, но смотрю на строку
.Pattern = "\\ *\* *MEGREFORMAT"
познаково разбираюсь
1 слеш служебный
2 слеш это тот что ищем
так?

3 пробел, а если их нет и несколько - не врубаюсь где об этом предусмотрено?
...
Рейтинг: 0 / 0
Find с конца текста
    #37247948
Ципихович Эндрю,
... так

Третий пробел, после него служебный символ, означающий повторение ноль или более раз (жадный).
Слэш служебный, просто "звздочъка"
...
...
Рейтинг: 0 / 0
Find с конца текста
    #37248041
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

1 слеш служебный
2 слеш это тот что ищем, в данном случае слеш
3 пробел
4 служебный символ, означающий повторение ноль или более раз предыдущего символа, то есть пробела в данном случае
а как он выглядит "*" ????
...
Рейтинг: 0 / 0
Find с конца текста
    #37248106
Ципихович Эндрю,
Вы специально игнорируете справочную информацию ?

Да, этот спецсимвол выглядит подозрительно похожим на астериск (звёздочку).
...
Рейтинг: 0 / 0
Find с конца текста
    #37248151
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,
в Вашем скрипте от 16:42 три звёздочки, пусть некоторая и сильно схожа, так какая из них ищет именно ту что я указал
"\*MERGEFORMAT" то есть между слешеи и М
???
...
Рейтинг: 0 / 0
Find с конца текста
    #37248191
Ципихович Эндрю,
элементарно, Ватсон.
Та, которая экранирована (сразу после слэша). Читать , до полного и окончательного просветления.
...
Рейтинг: 0 / 0
Find с конца текста
    #37248241
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

'1 и 2 знаки - последовательность двух слешей - "\\" соответствует "\", это то, что ищем, в данном случае слеш
'3 пробел - " "
'4 служебный символ - "*", означающий повторение ноль или более раз предыдущего символа, то есть пробела в данном случае
'5 служебный символ, слеш - "\"
'6 звёздочка - "*", это что ищем
' 7 пробел - " "
'8 служебный символ - "*", означающий повторение ноль или более раз предыдущего символа, то есть пробела в данном случае

ТАК??
Я не понял, зачем 5 й нужен???
...
Рейтинг: 0 / 0
Find с конца текста
    #37248300
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю, сообщает
'5 служебный символ, слеш - "\" - превращает звёздочку "*" в обычный символ (так как она является специсимволом)
ОК??
ТАК???
...
Рейтинг: 0 / 0
Find с конца текста
    #37248316
Ципихович Эндрю,
а да маладэц! Сам дагадалса?(с)
...
Рейтинг: 0 / 0
Find с конца текста
    #37248331
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

канечно, главное не забыть, не не так - главное потом записанное собственноручно понять
...
Рейтинг: 0 / 0
Find с конца текста
    #37250933
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,
сдеал функцию:
'правильный Range с строки или ячейки таблицы Word
'абзац заменяем на пробел
'заменяем два, три, четыре и более пробелов подряд на один пробел
'удаляем концевую сноску таблицы Word
'заменяем пробел, следом идущую запятую на запятую, то есть удаляем пробел перед запятой

Получилось в три захода, трудности испытываю с заменой: 'Chr$(7) и 'Chr$(13), а как бы Вы сделали, в пол прохода???
Мне кажется именно такй порядок замены, я имею ввиду очередность важна, зотя ВБА его знает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim Строка_таблицы_Word As String
'здесь при помощи Trim$ откидываем лишние пробелы в начале и в конце строки или ячейки таблицы Word
Строка_таблицы_Word = Trim$(ActiveDocument.Tables( 1 ).Rows( 1 ).Cells( 1 ).Range)

Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
'искать по всему тексту, по умолчанию False - будет найдено только первое совпадение
reg.Global = True
'Chr$(13) это абзац, заменяем его на пробел
reg.Pattern = Chr$( 13 )
Строка_таблицы_Word = reg.Replace(Строка_таблицы_Word, " ")
'+ означает, что заменяем два, три, четыре и более пробелов подряд на один пробел
reg.Pattern = " +"
Строка_таблицы_Word = reg.Replace(Строка_таблицы_Word, " ")
'Chr$(7) это концевая сноска таблицы Word
reg.Pattern = Chr$( 7 )
Строка_таблицы_Word = reg.Replace(Строка_таблицы_Word, "")
'заменяем пробел, следом идущую запятую на запятую, то есть удаляем пробел перед запятой
reg.Pattern = " ,"
Строка_таблицы_Word = reg.Replace(Строка_таблицы_Word, ",")
'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
Set reg = Nothing
Спасибо
...
Рейтинг: 0 / 0
Find с конца текста
    #37250956
Ципихович Эндрю,
в полпрохода у меня не получается.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 ' N.B.: то, что Вы обзываете Строка_таблицы_Word на самом деле содержимое ЯЧЕЙКИ, а НЕ строки
Dim s$, reg As Object
s = ActiveDocument.Tables( 1 ).Cell( 1 ,  1 ).Range  ' запись получается короче, чем .Rows(1).Cells(1)
If Right(s,  1 ) = Chr( 7 ) Then s = Left(s, Len(s) -  1 ) ' удаление концевой сноски
s = Trim$(s)  ' удаление пробелов в начале и в конце "строки"
s = Replace(s, Chr( 13 ), " ")  ' замена символов "конец строки" на пробел

Set reg = CreateObject("VBScript.RegExp")
With reg
  .Global = True
  .Pattern = " +"
  s = .Replace(s, " ")
End With
Set reg = Nothing

' можно "несколько пробелов подряд заменить на один" и без регулярных выражений:
' Dim k&
' k = InStr(1, s, "  ")
' Do While k > 0
'   s = Replace(s, "  ", " ")
'   k = InStr(1, s, "  ")
' Loop
...
Рейтинг: 0 / 0
Find с конца текста
    #37250965
Ципихович Эндрю,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
' За работоспособность не поручусь. Сорри
s = activedocument.tables( 1 ).cell( 1 ,  1 ).range
set reg = createobject("vbscript.regexp")
with reg
  .global = true
  .pattern = "(?: |\r|\x07)+"
  s = .replace(s, " ")
end with
set reg = nothing
s = trim$(s)
...
Рейтинг: 0 / 0
Find с конца текста
    #37250966
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, спасибо, а что когда то: If Right(s, 1) = Chr(7) Then не выполнится??, условие зачем??
чё-то у меня красивше


>запись получается короче, чем .Rows(1).Cells(1)
неа, можно забыть, что тут что .Tables(1).Cell(1, 1).Range
С единицами конечно проще
...
Рейтинг: 0 / 0
Find с конца текста
    #37250970
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это от сегодня, 21:42 уже лучше надо пробовать
x07 - концевая сноска??
...
Рейтинг: 0 / 0
Find с конца текста
    #37250977
Ципихович Эндрю,
If Right(s, 1) = Chr(7) Then не выполнится??, условие зачем?? Если последний символ переменной - концевая сноска, то "удаляем её", если нет - то ничего не делаем.

авторx07 - концевая сноска?? \x07 - концевая сноска
...
Рейтинг: 0 / 0
Find с конца текста
    #37250978
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

>Если последний символ переменной - концевая сноска, то "удаляем её", если нет - то ничего не делаем
А разве так быввет, чтобы последний знак был не концевой сноской, ответ нееееееееет, ОК???
...
Рейтинг: 0 / 0
Find с конца текста
    #37250983
Ципихович Эндрю,
не знаю. Потому и поставил проверку. Если последний символ ВСЕГДА концевая сноска, то проверка, конечно, лишняя.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Find с конца текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]