|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.01.2012, 20:50 | #1 |
Новичок
Джуниор
Регистрация: 25.01.2012
Сообщений: 2
|
макрос выдергивает телефонные номера
Фсем привет.
я совсем новеньки в VBA до этого занимался ASM, поэтому начну с глупых вопросов. пре до мной встала задача написать прогу выдергивающую номера сотиков из документа и записать их в новый документ чтоб каждый номер на новой строчке, а потом привести их к виду +7 ########## я состряпал вот такой совсем сырой макрос, он ставит курсор в начало документа, ищет номер сотика вырезает его и записыват его в конец списка и нажимает на ентер Sub Макрос1() ' ' Макрос1 Макрос ' ' ActiveWindow.ActivePane.VerticalPer centScrolled = 0 Selection.MoveUp Unit:=wdScreen, Count:=1 Selection.HomeKey Unit:=wdLine 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 Selection.Find.Execute Selection.Cut ActiveWindow.ActivePane.VerticalPer centScrolled = 86 Selection.MoveDown Unit:=wdScreen, Count:=1 Selection.EndKey Unit:=wdLine Selection.TypeParagraph Selection.PasteAndFormat (wdPasteDefault) ActiveWindow.ActivePane.VerticalPer centScrolled = 0 Selection.MoveUp Unit:=wdScreen, Count:=1 '---------------------тоже самое только теперрь если попалось запись например с двумя пробелами -------------------------------------- ActiveWindow.ActivePane.VerticalPer centScrolled = 0 Selection.MoveUp Unit:=wdScreen, Count:=1 Selection.HomeKey Unit:=wdLine 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 Selection.Find.Execute Selection.Cut ActiveWindow.ActivePane.VerticalPer centScrolled = 86 Selection.MoveDown Unit:=wdScreen, Count:=1 Selection.EndKey Unit:=wdLine Selection.TypeParagraph Selection.PasteAndFormat (wdPasteDefault) ActiveWindow.ActivePane.VerticalPer centScrolled = 0 Selection.MoveUp Unit:=wdScreen, Count:=1 End Sub но хочется его зациклить чтобы напрмер дошел до конца документа записал все номера в конце и остановился. |
25.01.2012, 20:52 | #2 |
Новичок
Джуниор
Регистрация: 25.01.2012
Сообщений: 2
|
если несложно сделайте пожалуйста небольшие коментарии в тексте программы. хочу разоьраться а не просто решить и отложить в сторону!
|
26.01.2012, 01:23 | #3 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Предлагаю шаблон поиска (в окне по Ctrl-F) использовать c подстановочными знаками, как это сделано у viter.alex’а в посте #6 темы Макрос: найти все, копировать.
А чего ж на уже освоенном ассемблере не забацали?
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
31.01.2012, 19:54 | #4 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 13
|
макрос выдергивает телефонные номера
А я выдергиваю номера телефонов вот этими тремя макросами....
Sub ВырезаемНОМЕРтелефона1() 'извлекает все email из документа и размещает в новом документе столбиком Dim Source As Document, Target As Document, myRange As Range Set Source = ActiveDocument Set Target = Documents.Add Application.ScreenUpdating = False Source.Activate Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find Do While .Execute(findText:="0??-???-??-??", _ MatchWildcards:=True, Wrap:=wdFindStop, Forward:=True) = True Set myRange = Selection.Range Target.Range.InsertAfter myRange & vbCr Loop End With Selection.HomeKey Unit:=wdStory Target.Activate End Sub Sub ВырезаемНОМЕРтелефона2() 'извлекает все email из документа и размещает в новом документе столбиком Dim Source As Document, Target As Document, myRange As Range Set Source = ActiveDocument Set Target = Documents.Add Application.ScreenUpdating = False Source.Activate Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find Do While .Execute(findText:=" ???-??-??", _ MatchWildcards:=True, Wrap:=wdFindStop, Forward:=True) = True Set myRange = Selection.Range Target.Range.InsertAfter myRange & vbCr Loop End With Selection.HomeKey Unit:=wdStory Target.Activate End Sub Sub ВырезаемНОМЕРтелефона3() 'извлекает все email из документа и размещает в новом документе столбиком Dim Source As Document, Target As Document, myRange As Range Set Source = ActiveDocument Set Target = Documents.Add Application.ScreenUpdating = False Source.Activate Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find Do While .Execute(findText:=" ??-??-??", _ MatchWildcards:=True, Wrap:=wdFindStop, Forward:=True) = True Set myRange = Selection.Range Target.Range.InsertAfter myRange & vbCr Loop End With Selection.HomeKey Unit:=wdStory Target.Activate End Sub может это уровень"лопаты"...но работает настолько надежно.Запускаю по очереди...получается три Вордовских док.(вырезает столбиком)..затем переношу в Ексель ...макросом...и тут уже "разбираюсь" с ними....но дальнейшая судбба №телефонов ...это накопление в базе(просто в Ехеле),а что бы "уложить " их туда...надо убрать тире(-).....но вот фокус...макрос кот у меня есть режет не только (-)тире но и "выкашивает"нули(0) в начале номера...что в макросе "подправить "что бы он убирал только тире(-)...,а нули оставлял...вот макрос ...Я уже его ерзал,ерзал по столу...он или не работает или выкашивает все... Sub Convert_Phone() Application.ScreenUpdating = False ' ' ' With Selection.SpecialCells(xlConstants) .Replace what:="-", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=True End With ' Application.ScreenUpdating = True End Sub ..кто,что может сказать на эту тему...... |
01.02.2012, 04:54 | #5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Перед удалением тире сделай ячейки текстовыми, тогда незначащие нули удаляться не будут. Или в формате ячейки сделать так, чтобы незначащие нули не обрезались. Если такое возможно
Лучше день потерять — потом за пять минут долететь!©
|
08.02.2012, 12:35 | #6 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 13
|
макрос выдергивает телефонные номера
Проблему просто "обошел" стороной.Вместе с тире полюбому выкашиваетсяи 0 .Поэтому ...Выкашиваю ( -) и (0)....форматированием000-000-00-00....выставляю перед первой цифрой (0)...перегоняю материал в Ворд и тутже возвращаю назад в Ехсель..Получается прилетает СОДЕРЖАНИЕ текст и вставляю в ячейку с форматированием ТЕКСТ(и вставляю его как текст) ...только в таком случае удается ...оставить,зафиксировать (0)ноль первой цифрой числа.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос для набора номера из Excel | Инн@ | Microsoft Office Excel | 31 | 29.12.2013 00:44 |
Макрос обновить номера таблиц | Polotenchik | Microsoft Office Word | 3 | 12.06.2011 11:12 |
нужен макрос чтобы найти одинаковые инвентарные номера и вычесть их стоимость | Любавушка | Microsoft Office Excel | 14 | 11.03.2010 04:36 |
Макрос VBA EXCEl - простановка в ячейку номера страницы | Обыватель | Microsoft Office Excel | 1 | 14.02.2008 12:49 |
телеф книжка где будут сохранены адреса и телефонные номера | oblom | Общие вопросы C/C++ | 10 | 18.10.2007 02:11 |