Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/таблицы с макросами при переходе с Excel 2003 на 2007 - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
таблицы с макросами при переходе с Excel 2003 на 2007
Mihail72856 Дата: Вторник, 29.11.2011, 00:38 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Есть файл Наши.xlsm ранее при Excel 2003 он был Наши.xls.
Сделали преобразование при переходе на 2007. Ссылки на скачивание:
http://depositfiles.com/files/q81fmng61
или
http://files.mail.ru/FDFEAF

В таблице макрос вызывается CTRL+Y (на английском регистре).
Он создает новый лист , в котором из колонки М в предидущем листе значения переходят в колонку В следующего,
а значения в колонке F (если они введены) очищаются в следующем листе.
В 2007 можем создавать поочереди 3 листа, потом сильно замедляется процесс создания следующего листа.
На 6-ой лист требуется несколько минут. Хотя сам файл получается не очень большой.
В 2003 замедления не было ни какого и легко создавались много листов - на что хватало памяти компа.
Это проблемма в 2007 или в чем-то еще ?
Просветите пожалуйста буду благодарен.
Михаил
 
Ответить
СообщениеЕсть файл Наши.xlsm ранее при Excel 2003 он был Наши.xls.
Сделали преобразование при переходе на 2007. Ссылки на скачивание:
http://depositfiles.com/files/q81fmng61
или
http://files.mail.ru/FDFEAF

В таблице макрос вызывается CTRL+Y (на английском регистре).
Он создает новый лист , в котором из колонки М в предидущем листе значения переходят в колонку В следующего,
а значения в колонке F (если они введены) очищаются в следующем листе.
В 2007 можем создавать поочереди 3 листа, потом сильно замедляется процесс создания следующего листа.
На 6-ой лист требуется несколько минут. Хотя сам файл получается не очень большой.
В 2003 замедления не было ни какого и легко создавались много листов - на что хватало памяти компа.
Это проблемма в 2007 или в чем-то еще ?
Просветите пожалуйста буду благодарен.
Михаил

Автор - Mihail72856
Дата добавления - 29.11.2011 в 00:38
Hugo Дата: Вторник, 29.11.2011, 01:37 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Code
    Cells.Select
       Selection.Copy
- знаете, сколько этих cells в 2007?

Хотя попробовал поменять на UsedRange - особо быстрее не стало работать, чем дальше, тем медленнее...

Удалил лишние строки/столбцы, чуть оптимизировал код, отключил пересчёт во время работы макроса - до 10 листов отрабатывает довольно быстро (проверьте, всё ли верно делает), но дальше всё равно тормоза... Вероятно, есть ещё что-то, что в 2007 работает иначе, чем в 2003.
Может быть 2010 версия лучше справится?
К сообщению приложен файл: .v2.xlsb (52.7 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
Code
    Cells.Select
       Selection.Copy
- знаете, сколько этих cells в 2007?

Хотя попробовал поменять на UsedRange - особо быстрее не стало работать, чем дальше, тем медленнее...

Удалил лишние строки/столбцы, чуть оптимизировал код, отключил пересчёт во время работы макроса - до 10 листов отрабатывает довольно быстро (проверьте, всё ли верно делает), но дальше всё равно тормоза... Вероятно, есть ещё что-то, что в 2007 работает иначе, чем в 2003.
Может быть 2010 версия лучше справится?

Автор - Hugo
Дата добавления - 29.11.2011 в 01:37
RAN Дата: Вторник, 29.11.2011, 02:24 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Может ctrl+q ?
К сообщению приложен файл: 8447498.xlsm (92.3 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМожет ctrl+q ?

Автор - RAN
Дата добавления - 29.11.2011 в 02:24
RAN Дата: Вторник, 29.11.2011, 09:27 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Даже наверное так
Code
Sub qqq()
Dim oldName$, newName$, endRow&
endRow = Cells(Rows.Count, 1).End(xlUp).Row
oldName = ActiveSheet.Name
newName = Format(Date, "dd,mm,yy")
Application.ScreenUpdating = False
ActiveSheet.Copy after:=ActiveSheet
On Error Resume Next
ActiveSheet.Name = newName
If Err <> 0 Then ActiveSheet.Name = newName & " (" & Split(ActiveSheet.Name, "(")(1)
Err.Clear
Sheets(newName).Range("B3:B" & endRow).Value = Sheets(newName).Range("M3:M" & endRow).Value
Sheets(newName).Range("F3:F" & endRow).ClearContents
Application.ScreenUpdating = True
End Sub

Таймер не пробовал, но на глаз - что 1й лист, что 50й.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДаже наверное так
Code
Sub qqq()
Dim oldName$, newName$, endRow&
endRow = Cells(Rows.Count, 1).End(xlUp).Row
oldName = ActiveSheet.Name
newName = Format(Date, "dd,mm,yy")
Application.ScreenUpdating = False
ActiveSheet.Copy after:=ActiveSheet
On Error Resume Next
ActiveSheet.Name = newName
If Err <> 0 Then ActiveSheet.Name = newName & " (" & Split(ActiveSheet.Name, "(")(1)
Err.Clear
Sheets(newName).Range("B3:B" & endRow).Value = Sheets(newName).Range("M3:M" & endRow).Value
Sheets(newName).Range("F3:F" & endRow).ClearContents
Application.ScreenUpdating = True
End Sub

Таймер не пробовал, но на глаз - что 1й лист, что 50й.

Автор - RAN
Дата добавления - 29.11.2011 в 09:27
Mihail72856 Дата: Вторник, 29.11.2011, 11:13 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Извините RUN я не такой продвинутый. Что это за 8447498.xlsm - это архив в котором несколько папок и файлов.
Как этим пользоваться ?
И как вставить формула или Код VBA: в нашу таблицу ?
Всё, спасибо, разобрался.


Сообщение отредактировал Mihail72856 - Вторник, 29.11.2011, 15:14
 
Ответить
СообщениеИзвините RUN я не такой продвинутый. Что это за 8447498.xlsm - это архив в котором несколько папок и файлов.
Как этим пользоваться ?
И как вставить формула или Код VBA: в нашу таблицу ?
Всё, спасибо, разобрался.

Автор - Mihail72856
Дата добавления - 29.11.2011 в 11:13
Hugo Дата: Вторник, 29.11.2011, 12:42 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Этот архив - такой же архив, как и Ваш файл smile
Просто при сохранении браузером измените расширение на xlsm/x (смотря что скачиваете), или позже замените.
Эти файлы по сути архивы и есть.
А по коду - так конечно быстрее, но кажется, что исходный функционал сохранён не весь - нужно доработать.
Закрепления областей например нет.
Но что именно нужно получить - не разобрался... не разбирался.

P.S. Зачем повторили листинг кода? Может быть удалите - зачем плодить?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЭтот архив - такой же архив, как и Ваш файл smile
Просто при сохранении браузером измените расширение на xlsm/x (смотря что скачиваете), или позже замените.
Эти файлы по сути архивы и есть.
А по коду - так конечно быстрее, но кажется, что исходный функционал сохранён не весь - нужно доработать.
Закрепления областей например нет.
Но что именно нужно получить - не разобрался... не разбирался.

P.S. Зачем повторили листинг кода? Может быть удалите - зачем плодить?

Автор - Hugo
Дата добавления - 29.11.2011 в 12:42
Mihail72856 Дата: Вторник, 29.11.2011, 16:03 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Обнаружили причину , но решения нет.
В колонке М (остаток) в нашем файле было применено условное форматирование.
При значении в ячейке меньше 0 она выделялась. В файле от RAN условное форматирование не применялось.
Если применить - проблема остается.
Если в нашем файле
http://depositfiles.com/files/q81fmng61
или http://files.mail.ru/FDFEAF
убрать условное форматирование - то то-же работает все без проблем.
В 2003 это не имело особого значение. А в 2007 тормозит при выполнении макроса.
Вообще это тут условное форматирование применялось для того, что-бы оператор вводя данные обращал внимание на
выделение красным- если продано товара больше чем было.
Как быть тут ?
 
Ответить
СообщениеОбнаружили причину , но решения нет.
В колонке М (остаток) в нашем файле было применено условное форматирование.
При значении в ячейке меньше 0 она выделялась. В файле от RAN условное форматирование не применялось.
Если применить - проблема остается.
Если в нашем файле
http://depositfiles.com/files/q81fmng61
или http://files.mail.ru/FDFEAF
убрать условное форматирование - то то-же работает все без проблем.
В 2003 это не имело особого значение. А в 2007 тормозит при выполнении макроса.
Вообще это тут условное форматирование применялось для того, что-бы оператор вводя данные обращал внимание на
выделение красным- если продано товара больше чем было.
Как быть тут ?

Автор - Mihail72856
Дата добавления - 29.11.2011 в 16:03
Mihail72856 Дата: Вторник, 29.11.2011, 17:05 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Прикладываю файл – сильно урезанный.
Составляет примерно 3-5% от исходного большого.
Тут включено условное форматирование.
Здесь листов 10 делаются, потом тормозит.
На большом файле тормозит с 4-5 листа.
К сообщению приложен файл: 5601674.xlsm (48.9 Kb)
 
Ответить
СообщениеПрикладываю файл – сильно урезанный.
Составляет примерно 3-5% от исходного большого.
Тут включено условное форматирование.
Здесь листов 10 делаются, потом тормозит.
На большом файле тормозит с 4-5 листа.

Автор - Mihail72856
Дата добавления - 29.11.2011 в 17:05
RAN Дата: Вторник, 29.11.2011, 17:22 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мой макрос на вашем файле.
И где тормоза?
Что 1й лист, что последний. На 30 листе 0,05 секунды?
0,2344 - лист 113
И ваш макрос на вашем файле
36,1914 - лист 13

Добавил строк до 2500


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 29.11.2011, 17:40
 
Ответить
СообщениеМой макрос на вашем файле.
И где тормоза?
Что 1й лист, что последний. На 30 листе 0,05 секунды?
0,2344 - лист 113
И ваш макрос на вашем файле
36,1914 - лист 13

Добавил строк до 2500

Автор - RAN
Дата добавления - 29.11.2011 в 17:22
Mihail72856 Дата: Вторник, 29.11.2011, 17:56 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Проблема состоит в функции условного форматирования.
см. ответ №7
 
Ответить
СообщениеПроблема состоит в функции условного форматирования.
см. ответ №7

Автор - Mihail72856
Дата добавления - 29.11.2011 в 17:56
_Boroda_ Дата: Вторник, 29.11.2011, 18:19 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Увеличил Ваш файл до 20 тыс. строк. Немного (совсем чуть-чуть) переделал Ваш макрос.
На 50-м листе время работы 2,48сек.
К сообщению приложен файл: 5601674_2.xlsm (28.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУвеличил Ваш файл до 20 тыс. строк. Немного (совсем чуть-чуть) переделал Ваш макрос.
На 50-м листе время работы 2,48сек.

Автор - _Boroda_
Дата добавления - 29.11.2011 в 18:19
Hugo Дата: Вторник, 29.11.2011, 20:54 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
_Boroda_, погонял код - в начале быстро, а на 11-м листе уже 8 сек., на 12-ом - 13 сек., на 13-ом - 40 секунд!!!
Эксель 2007 русский.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение_Boroda_, погонял код - в начале быстро, а на 11-м листе уже 8 сек., на 12-ом - 13 сек., на 13-ом - 40 секунд!!!
Эксель 2007 русский.

Автор - Hugo
Дата добавления - 29.11.2011 в 20:54
Mihail72856 Дата: Вторник, 29.11.2011, 21:41 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_ , а Вы включите условное форматирование по колонке М (что-бы выделялись ячейки при отрицательных числах).
Тогда даже на таком маленьком файле мы получим долгое ожидание уже на 10-м листе.
А если это большой файл, то проблеммы начинаются с 4-5 листа.
А при срабатывании макроса получаем по центру табличку:

Microsoft Excel
0,40625 - или другие цифры - это счетчик за сколько срабатывает ?
 
Ответить
Сообщение_Boroda_ , а Вы включите условное форматирование по колонке М (что-бы выделялись ячейки при отрицательных числах).
Тогда даже на таком маленьком файле мы получим долгое ожидание уже на 10-м листе.
А если это большой файл, то проблеммы начинаются с 4-5 листа.
А при срабатывании макроса получаем по центру табличку:

Microsoft Excel
0,40625 - или другие цифры - это счетчик за сколько срабатывает ?

Автор - Mihail72856
Дата добавления - 29.11.2011 в 21:41
_Boroda_ Дата: Вторник, 29.11.2011, 21:55 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Quote (Hugo)
_Boroda_, погонял код - в начале быстро, а на 11-м листе уже 8 сек., на 12-ом - 13 сек., на 13-ом - 40 секунд!!!
Эксель 2007 русский.

Мда...
У меня на работе машина 4 ядра 8Г оперативки 64-разряда 7 Win 10 офис
дома - ЗНАЧИТЕЛЬНО хуже.
Так вот, дома на 20000 строк первый же лист думал 9 сек.
Поставил в начале и в конце макроса Application.Calculation = xlCalculationManual и Application.Calculation = xlCalculationAutomatic. С ними 20-й лист думал 5,05 (все предыдущие примерно также).

Потом переписал макрос. 20-й лист думает 3,19сек.
Code
Sub tt()
Dim SC_, R_, t_
t_ = Timer
     Application.Calculation = xlCalculationManual
     Application.ScreenUpdating = 0
         SC_ = Sheets.Count
         R_ = Range("A" & Rows.Count).End(xlUp).Row
         Rows(R_ + 1 & ":" & Rows.Count).Clear
         ActiveSheet.Copy After:=Sheets(SC_)
         With Sheets(SC_)
             .Range("B4:B" & R_) = .Range("M4:M" & R_).Value
             .Range("F4:F" & R_).ClearContents
         End With
     Application.ScreenUpdating = 1
     Application.Calculation = xlCalculationAutomatic
     t_ = Timer - t_
     MsgBox t_
End Sub

Интересно, сколько будет думать на работе?

Quote
0,40625 - или другие цифры - это счетчик за сколько срабатывает ?

Да
Quote
_Boroda_ , а Вы включите условное форматирование по колонке М (что-бы выделялись ячейки при отрицательных числах)

Оно "включено".
К сообщению приложен файл: 5601674_5.xlsm (16.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Quote (Hugo)
_Boroda_, погонял код - в начале быстро, а на 11-м листе уже 8 сек., на 12-ом - 13 сек., на 13-ом - 40 секунд!!!
Эксель 2007 русский.

Мда...
У меня на работе машина 4 ядра 8Г оперативки 64-разряда 7 Win 10 офис
дома - ЗНАЧИТЕЛЬНО хуже.
Так вот, дома на 20000 строк первый же лист думал 9 сек.
Поставил в начале и в конце макроса Application.Calculation = xlCalculationManual и Application.Calculation = xlCalculationAutomatic. С ними 20-й лист думал 5,05 (все предыдущие примерно также).

Потом переписал макрос. 20-й лист думает 3,19сек.
Code
Sub tt()
Dim SC_, R_, t_
t_ = Timer
     Application.Calculation = xlCalculationManual
     Application.ScreenUpdating = 0
         SC_ = Sheets.Count
         R_ = Range("A" & Rows.Count).End(xlUp).Row
         Rows(R_ + 1 & ":" & Rows.Count).Clear
         ActiveSheet.Copy After:=Sheets(SC_)
         With Sheets(SC_)
             .Range("B4:B" & R_) = .Range("M4:M" & R_).Value
             .Range("F4:F" & R_).ClearContents
         End With
     Application.ScreenUpdating = 1
     Application.Calculation = xlCalculationAutomatic
     t_ = Timer - t_
     MsgBox t_
End Sub

Интересно, сколько будет думать на работе?

Quote
0,40625 - или другие цифры - это счетчик за сколько срабатывает ?

Да
Quote
_Boroda_ , а Вы включите условное форматирование по колонке М (что-бы выделялись ячейки при отрицательных числах)

Оно "включено".

Автор - _Boroda_
Дата добавления - 29.11.2011 в 21:55
Mihail72856 Дата: Вторник, 29.11.2011, 22:50 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Можете приложить файл с переписанным макросом ?
 
Ответить
СообщениеМожете приложить файл с переписанным макросом ?

Автор - Mihail72856
Дата добавления - 29.11.2011 в 22:50
Mihail72856 Дата: Среда, 30.11.2011, 00:51 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Завтра буду на работе во 2-ой половине дня. Протестирую и отпишусь.
Спасибо.
 
Ответить
СообщениеЗавтра буду на работе во 2-ой половине дня. Протестирую и отпишусь.
Спасибо.

Автор - Mihail72856
Дата добавления - 30.11.2011 в 00:51
Mihail72856 Дата: Среда, 30.11.2011, 11:11 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_ при срабатывании макроса в генерируем следующем листе не очищается колонка F
А в колонке М формула =B5-F5 (это я сам поправлю). На большом файле не смотрел еще.
 
Ответить
Сообщение_Boroda_ при срабатывании макроса в генерируем следующем листе не очищается колонка F
А в колонке М формула =B5-F5 (это я сам поправлю). На большом файле не смотрел еще.

Автор - Mihail72856
Дата добавления - 30.11.2011 в 11:11
Mihail72856 Дата: Среда, 30.11.2011, 19:01 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_ проверил работает быстро но не все делается так как было изначально.
У Вас при вводе данных в колонку F при срабатывании макроса слева от исходной страницы генерируется новый лист с данными. И исходный лист переименовывается в ...(2), а сгенерированный файл получает имя исходного.
Так-же в исходном файле пропадают значения (а там они должны оставаться).
Прикладываю пример как должно быть. Новый лист должен быть справа от исходного и пусть носил например имя лист1
В нем очищается колонка F , а данные из исходного листа из колонки М (остаток) перемещаются в колонку В (кол-во) следующего листа.
При этом с исходным листом ничего не происходит.
К сообщению приложен файл: 111.xlsm (24.8 Kb)
 
Ответить
Сообщение_Boroda_ проверил работает быстро но не все делается так как было изначально.
У Вас при вводе данных в колонку F при срабатывании макроса слева от исходной страницы генерируется новый лист с данными. И исходный лист переименовывается в ...(2), а сгенерированный файл получает имя исходного.
Так-же в исходном файле пропадают значения (а там они должны оставаться).
Прикладываю пример как должно быть. Новый лист должен быть справа от исходного и пусть носил например имя лист1
В нем очищается колонка F , а данные из исходного листа из колонки М (остаток) перемещаются в колонку В (кол-во) следующего листа.
При этом с исходным листом ничего не происходит.

Автор - Mihail72856
Дата добавления - 30.11.2011 в 19:01
_Boroda_ Дата: Среда, 30.11.2011, 20:22 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Ловите.
Так?
К сообщению приложен файл: 111_1.xlsm (20.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЛовите.
Так?

Автор - _Boroda_
Дата добавления - 30.11.2011 в 20:22
Mihail72856 Дата: Четверг, 01.12.2011, 00:20 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

_Boroda_ спасибо за оперативный ответ. Завтра протестирую и отпишусь.
 
Ответить
Сообщение_Boroda_ спасибо за оперативный ответ. Завтра протестирую и отпишусь.

Автор - Mihail72856
Дата добавления - 01.12.2011 в 00:20
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!