|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.04.2016, 17:30 | #1 |
Регистрация: 25.04.2016
Сообщений: 6
|
Создание макроса
Форумчане, помогите, плиз.
Задача стоит такая: написать макрос для обработки реестра. На первой странице книги список листов со ссылками на соответсвующие листы. Необходимо зайти на каждый лист скопировать данные с 8 строки до конца таблицы, вставить на отдельный лист и таким образом сформировать список. На каждом листе в ячейке (7,1) подсчитано количество строк. Написан макрос, который на 120 объектах работает замечательно, а дальше начинаются глюки...копирует несколько раз данные с какого-нибудь листа. Sub selected() Dim n As Variant, IRow As Variant, b As Variant, c As Variant, i As Variant If IsArray(Selection) = False Then GoTo Line1 Else Set arr = Selection leng = arr.Rows.Count IRow = Selection.Row b = Selection.Column Worksheets.Add.Name = "Результат" c = 0 For i = 1 To leng Sheets("Реестр для сайта").Select Cells(IRow + i - 1, b).Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Cells(7, 1).Select Selection.Value = Selection.Value n = Cells(7, 1) If n > 0 Then Range(Cells(8, 1), Cells(8 + n - 1, 10)).Copy: Sheets("Результат").Select: ActiveSheet.Paste Destination:=Worksheets("Результат" ).Range(Cells(c + 1, 1), Cells(c + n, 10)) ElseIf n = 0 Then Sheets("Реестр для сайта").Select End If c = c + n Next i GoTo LastLine Line1: MsgBox ("Выберите диапазон") LastLine: End Sub Файл для обработки можно скачать тут: http://gov.spb.ru/gov/otrasl/inspekc...-po-upravleniy... вторая ссылка Реестр лицензий субъекта Российской Федерации - «Санкт-Петербург» |
25.04.2016, 20:25 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Интересно стало что там за файл такой на 120+ листов, но... поприветствовала 404 страница.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
25.04.2016, 20:43 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
в техническом описании ексел написано, что количество страниц в книге ограничено только обьемом оперативной памяти
т.е. их может быть много, но все-таки ограничено если я в книге вижу больше 5 листов - я уже пугаюсь, а книги с более, чем 10 листов стараюсь вообще не открывать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
25.04.2016, 20:49 | #4 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
1) есть скрытые строки с дубликатами данных (макрос цепляет данные из скрытых строк) 2) аналогично, только есть скрытые не строки, и листы PS: макрос, конечно, оставляет желать лучшего, - но там не видно ничего такого, что вдруг начало бы зацикливаться на конкретном листе |
|
25.04.2016, 21:54 | #5 | |||
Регистрация: 25.04.2016
Сообщений: 6
|
Цитата:
Цитата:
Цитата:
На небольшом примере работает на ура, виснет именно при обработке всего файла. Файл сократила до 150 листов и он помещается во вложении. Глючить начинает на 147 листе, несколько раз вставляет с него данные. При удачной обработке 150 листов в результирующем списке должно получиться 17 283 строки. А получается 17 866. |
|||
26.04.2016, 09:16 | #6 |
Регистрация: 25.04.2016
Сообщений: 6
|
Уважаемые,
попытка обработать файл по частям ни к чему хорошему не привела. Попробовала обработать всего 4 страницы, начиная с 147 по 150, макрос 4 раза вставил в список данные с 147 страницы соответственно числу страниц((( в чем может быть ошибка? вроде 4 страницы не такой большой объем данных для обработки....страницы с 1 по 146 были предварительно удалены. |
26.04.2016, 10:44 | #7 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Если запустить такой макрос:
Код:
Цитата:
надо не ссылки перебирать (которые криво сделаны, - видимо, путем копирования), и перебирать в цикле ЛИСТЫ файла Правильный макрос будет выглядеть так: Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 26.04.2016 в 10:54. |
|
26.04.2016, 11:00 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
откройте файл
нажмите кнопку навесьте фильтр на полученную таблицу фильтруйте по 1-й колонке простыми манипуляциями можете получить сводную (если она Вам нужна)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
26.04.2016, 11:04 | #9 |
Регистрация: 25.04.2016
Сообщений: 6
|
Ох, да! Спасибо огромное, Великий Гуру VBA!!
А я то на ссылки щелкаю и самое интересное,что они идут на правильные листы.... Все отлично срабатывает!!!! Это гениально!!!))))) Еще раз ОГРОМНОЕ СПАСИБО!!!)))) Последний раз редактировалось Lelik); 26.04.2016 в 11:09. |
26.04.2016, 12:02 | #10 |
Регистрация: 25.04.2016
Сообщений: 6
|
IgorGO, вы что-то такое умное сделали, я даже пока не осознала как это работает))) но ваш макрос подцепляет данные из другого файла,который я не выбирала, скрин немного потерла, т.к. там персональные данные....
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание макроса | Алексей1988 | Microsoft Office Word | 1 | 18.04.2015 19:31 |
создание макроса | андрей1972 | Помощь студентам | 1 | 05.12.2014 05:17 |
создание макроса | sha69 | Microsoft Office Excel | 6 | 14.09.2011 07:34 |
Создание макроса. | EvgeniyavM | Microsoft Office Excel | 9 | 02.02.2011 14:47 |
Создание макроса | SeregaSled | Microsoft Office Access | 2 | 28.12.2009 05:55 |