powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Find с конца текста
19 сообщений из 44, страница 2 из 2
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
19 сообщений из 44, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Find с конца текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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