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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование содержимого огромного файла без форматирования - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование содержимого огромного файла без форматирования (Макросы/Sub)
Копирование содержимого огромного файла без форматирования
SLAVICK Дата: Пятница, 26.02.2016, 13:40 | Сообщение № 21
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
все крутится. Будем ждать

Если Вам не нужен очищенный файл - а нужны просто значения с него:
можете удалить строки с комментариями

Т.е. удалите строки:
[vba]
Код
.Cells.ClearFormats ' очистка форматов
и
.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook 'Сохранение книги в "xlsx"
[/vba]
Тогда будет на порядок быстрее, но тогда файл-база останется как был - и при повторном открытии опять будет тормозить.
[offtop]мое любопытство хочет узнать результаты сравнений на проблемных файлах моего кода и кода Александра - организуете?
Мне не на чем проверить, а для общего развития - очень интересно как шустрее получается[/offtop]
Зы
Саш (_Boroda_ ), зачем ты "съел" букву :D ? в xlCalculaltionManua


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
все крутится. Будем ждать

Если Вам не нужен очищенный файл - а нужны просто значения с него:
можете удалить строки с комментариями

Т.е. удалите строки:
[vba]
Код
.Cells.ClearFormats ' очистка форматов
и
.SaveAs Filename:=fn, FileFormat:=xlOpenXMLWorkbook 'Сохранение книги в "xlsx"
[/vba]
Тогда будет на порядок быстрее, но тогда файл-база останется как был - и при повторном открытии опять будет тормозить.
[offtop]мое любопытство хочет узнать результаты сравнений на проблемных файлах моего кода и кода Александра - организуете?
Мне не на чем проверить, а для общего развития - очень интересно как шустрее получается[/offtop]
Зы
Саш (_Boroda_ ), зачем ты "съел" букву :D ? в xlCalculaltionManua

Автор - SLAVICK
Дата добавления - 26.02.2016 в 13:40
_Boroda_ Дата: Пятница, 26.02.2016, 13:46 | Сообщение № 22
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Саш (_Boroda_ ), зачем ты "съел" букву

Дык 13:45 - обедать пора, а мы тут автопересчет включаем-выключаем.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Саш (_Boroda_ ), зачем ты "съел" букву

Дык 13:45 - обедать пора, а мы тут автопересчет включаем-выключаем.

Автор - _Boroda_
Дата добавления - 26.02.2016 в 13:46
Мурад Дата: Пятница, 26.02.2016, 13:58 | Сообщение № 23
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Макрос Славика не завершил свою работу по прошествии 38 минут. Завершаю процесс.
Пробую код Александра из поста №20
 
Ответить
СообщениеМакрос Славика не завершил свою работу по прошествии 38 минут. Завершаю процесс.
Пробую код Александра из поста №20

Автор - Мурад
Дата добавления - 26.02.2016 в 13:58
SLAVICK Дата: Пятница, 26.02.2016, 14:06 | Сообщение № 24
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Пробую код Александра из поста №20

И попробуйте потом мой код без очистки и сохранения - файл вложил.
А то:
мое любопытство хочет узнать результаты сравнений на проблемных файлах

У меня мой код на не проблемном (600тыс строк файле) отработал менее чем за минуту.
К сообщению приложен файл: getText_1_3.xlsm (18.3 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 26.02.2016, 14:09
 
Ответить
Сообщение
Пробую код Александра из поста №20

И попробуйте потом мой код без очистки и сохранения - файл вложил.
А то:
мое любопытство хочет узнать результаты сравнений на проблемных файлах

У меня мой код на не проблемном (600тыс строк файле) отработал менее чем за минуту.

Автор - SLAVICK
Дата добавления - 26.02.2016 в 14:06
Мурад Дата: Пятница, 26.02.2016, 14:08 | Сообщение № 25
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Макрос
[vba]
Код
Sub speedOn()
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
        Application.DisplayStatusBar = False
        Application.DisplayAlerts = False
End Sub
Sub speedOff()
    Application.StatusBar = False
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.CalculateBeforeSave = True
    Application.EnableEvents = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
    DoEvents
End Sub
Sub Макрос1()
speedOn
With Workbooks("project_25.02.xls").Sheets(1)
    Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value
End With
speedOff
End Sub
[/vba]
завершил свою работу за 5 сек...
В итоге получилось, что надо. Такая разница во времени, ужас...
Спасибо, Александр!
 
Ответить
СообщениеМакрос
[vba]
Код
Sub speedOn()
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
        Application.DisplayStatusBar = False
        Application.DisplayAlerts = False
End Sub
Sub speedOff()
    Application.StatusBar = False
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.CalculateBeforeSave = True
    Application.EnableEvents = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
    DoEvents
End Sub
Sub Макрос1()
speedOn
With Workbooks("project_25.02.xls").Sheets(1)
    Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value
End With
speedOff
End Sub
[/vba]
завершил свою работу за 5 сек...
В итоге получилось, что надо. Такая разница во времени, ужас...
Спасибо, Александр!

Автор - Мурад
Дата добавления - 26.02.2016 в 14:08
Мурад Дата: Пятница, 26.02.2016, 14:15 | Сообщение № 26
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Единственное... Макрос при преобразовании изменил все значения одного поля - Реестровый номер
В примере ниже 5 первых строк таблицы
К сообщению приложен файл: rezultat.xlsx (17.6 Kb)
 
Ответить
СообщениеЕдинственное... Макрос при преобразовании изменил все значения одного поля - Реестровый номер
В примере ниже 5 первых строк таблицы

Автор - Мурад
Дата добавления - 26.02.2016 в 14:15
_Boroda_ Дата: Пятница, 26.02.2016, 14:21 | Сообщение № 27
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А так?
[vba]
Код
With Workbooks("project_25.02.xls").Sheets(1)
Columns("B:B").NumberFormat = "@"
Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value
End With
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА так?
[vba]
Код
With Workbooks("project_25.02.xls").Sheets(1)
Columns("B:B").NumberFormat = "@"
Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value
End With
[/vba]

Автор - _Boroda_
Дата добавления - 26.02.2016 в 14:21
SLAVICK Дата: Пятница, 26.02.2016, 14:25 | Сообщение № 28
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Единственное... Макрос при преобразовании изменил все значения одного поля

Попробуйте еще мой код из поста 24 - там такого не будет. (Или для таких ячеек нужно предварительно подготовить текстовые форматы в ячейках.)
Вопрос сколько будет отрабатывать. -- запустите если через минуты две не отработает - убейте процесс.
Такая разница во времени

Вы еще не забывайте что в коде Александра не тратится время на открытие - поскольку файл уже открыт - в моем коде файл открывается макросом.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Единственное... Макрос при преобразовании изменил все значения одного поля

Попробуйте еще мой код из поста 24 - там такого не будет. (Или для таких ячеек нужно предварительно подготовить текстовые форматы в ячейках.)
Вопрос сколько будет отрабатывать. -- запустите если через минуты две не отработает - убейте процесс.
Такая разница во времени

Вы еще не забывайте что в коде Александра не тратится время на открытие - поскольку файл уже открыт - в моем коде файл открывается макросом.

Автор - SLAVICK
Дата добавления - 26.02.2016 в 14:25
Мурад Дата: Пятница, 26.02.2016, 14:34 | Сообщение № 29
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
А так?

Ну а так вообще прелесть) Вы переиграли программистов из техподдержки, которые преобразовывали нам вчера этот файл в течение всего дня :)
Попробуйте еще мой код из поста 24

Попробуем!

2 секунды, Славик... Реестровые номера скопировались как надо :) Молодцы, ребята. Придумали молниеносную диету для "толстых" файлов)


Сообщение отредактировал Мурад - Пятница, 26.02.2016, 14:39
 
Ответить
Сообщение
А так?

Ну а так вообще прелесть) Вы переиграли программистов из техподдержки, которые преобразовывали нам вчера этот файл в течение всего дня :)
Попробуйте еще мой код из поста 24

Попробуем!

2 секунды, Славик... Реестровые номера скопировались как надо :) Молодцы, ребята. Придумали молниеносную диету для "толстых" файлов)

Автор - Мурад
Дата добавления - 26.02.2016 в 14:34
RAN Дата: Пятница, 26.02.2016, 18:01 | Сообщение № 30
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value

Саш, а нафига довесок в виде отключений обновления и пересчета? Никак не вкурю.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Range("A1").Resize(26773, 21) = .Range("A1").Resize(26773, 21).Value

Саш, а нафига довесок в виде отключений обновления и пересчета? Никак не вкурю.

Автор - RAN
Дата добавления - 26.02.2016 в 18:01
_Boroda_ Дата: Пятница, 26.02.2016, 19:12 | Сообщение № 31
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Первоначально его и не было http://www.excelworld.ru/forum/10-21775-175923-16-1456476677
Это потом уже стадный инстинкт себя проявил


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПервоначально его и не было http://www.excelworld.ru/forum/10-21775-175923-16-1456476677
Это потом уже стадный инстинкт себя проявил

Автор - _Boroda_
Дата добавления - 26.02.2016 в 19:12
SLAVICK Дата: Пятница, 26.02.2016, 20:38 | Сообщение № 32
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
а нафига довесок в виде отключений обновления и пересчета

Это я виноват :)
Просто "лучше перебдеть чем недобдеть" - особенно когда непонятна причина зависания файла
- я в своих проектах стараюсь всегда - сначала работы отключать все события - а в конце включать.
у меня на сложных кодах - это сохраняет много времени, особенно если есть файлы с "летающими" формулами. :D


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
а нафига довесок в виде отключений обновления и пересчета

Это я виноват :)
Просто "лучше перебдеть чем недобдеть" - особенно когда непонятна причина зависания файла
- я в своих проектах стараюсь всегда - сначала работы отключать все события - а в конце включать.
у меня на сложных кодах - это сохраняет много времени, особенно если есть файлы с "летающими" формулами. :D

Автор - SLAVICK
Дата добавления - 26.02.2016 в 20:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование содержимого огромного файла без форматирования (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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