Страница: 1 |
Страница: 1 |
Вопрос: Поиск 9-значных чисел с копированием в буфер
Добавлено: 23.10.09 19:50
Автор вопроса: TinoRex
Есть необходимость: в открытом документе word найти все 9-значные номера, причем каких-либо конкретных разделителей нет, т.е. номера могут быть где угодно в тексте. Но номера всегда разделены хотя бы одним символом (не цифрой). Дальше нужно скопировать все найденные номера в буфер обмена, через запятую.
Решение как я понимаю сводиться к реализации 3 вещей:
1) поиск номеров
2) копирование их в строковую переменную, с разделителем (запятой)
3) копирование строки в буфер обмена
Помогите с макросом. Или хотя бы «пните» в нужном направлении.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 23.10.09 22:14
т.е. эта 9ти значная цифра не отбита пробелами в начале и конце?
Номер ответа: 2
Автор ответа:
TinoRex
Вопросов: 1
Ответов: 3
Профиль | | #2
Добавлено: 24.10.09 07:57
разделителем может быть любой символ (кроме цифры) или несколько символов, включая спецсимволы (абзац и т.д.)
Номер ответа: 3
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #3
Добавлено: 24.10.09 10:36
пробелов нет, значит будет чуть сложнее
пинок в нужном направлении
если не понимаешь ничего страшного, главное, чтоб отделить смог
Номер ответа: 4
Автор ответа:
TinoRex
Вопросов: 1
Ответов: 3
Профиль | | #4
Добавлено: 24.10.09 12:43
Так не пойдет:
будут захватываться строки типа йцу123456789щу
Я записал макрос, там есть символ ^# - любая цифра, думаю как бы это организовать в грамотный цикл.
[source]
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^#^#^#^#^#^#^#^#^#^#^#^#"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
[source]
Основная проблема: нужно чтобы каждое найденное 9-значное число дописывалось в строковую переменную через запятую.
Как скопировать результат в буфер я знаю, тут просто – переменная.Copy
Номер ответа: 5
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #5
Добавлено: 24.10.09 12:56
Ну незнаю, поиском не пользовался.
Результат твоего кода будет зависеть от положения курсора.
А накапливать значения в переменную можно элементарно.
Переменная = Переменная & НовоеЗначение & ","
Номер ответа: 6
Автор ответа:
TinoRex
Вопросов: 1
Ответов: 3
Профиль | | #6
Добавлено: 24.10.09 14:44
Спасибо, сделал, вроде работает
Номер ответа: 7
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #7
Добавлено: 24.10.09 15:36
последнюю запятую отрезать не забудь
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 25.10.09 23:11
Можно через регулярные выражения.