|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2009, 02:14 | #1 |
Пользователь
Регистрация: 28.10.2009
Сообщений: 38
|
Скрипт не сохраняет данные
Всем привет!
У меня такая проблема - есть скрипт на VBA для Excel 2003 который должен обработать ~8000 однотипных файлов, извлечь из них данные и запихнуть в результирующую таблицу. При проверке работоспособности скрипта выяснилась интересная особенность - данные он извлекает, но почему-то на лист они не попадают. Скрипт долго-долго выдёргивает данные из файла, формируя в конце концов несколько строк, которые записывает нужные в ячейки листа. Если запускать скрипт под отладчиком и время от времени переключаться окно Excel, то всё будет нормально, ячейки будут заполняться значениями. Если же остаывить его работать просто так, то ничего происходить не будет. Если же запустить под отладчиком и ткнуть в окно excel, то можно заметить, как скрипт вставляет данные, а потом они куда-то исчезают... Помогите победить, пожалуйста! Код макроса идёт в следующем сообщении. |
28.10.2009, 02:15 | #2 |
Пользователь
Регистрация: 28.10.2009
Сообщений: 38
|
Код:
|
28.10.2009, 02:33 | #3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Код:
А обрабатываемую книгу Вы закрываете без сохранения: Wb.Close SaveChanges:=False Вот и причина исчезновения данных... |
28.10.2009, 02:40 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
И ещё: код можно упростить и ускорить, если учесть следующее:
Wb.Sheets(1).Cells(j, k).Value вычисляем ОДИН раз, а потом полученное значение используем внутри цикла. x=Sheets(1).Cells(j, k) Нет смысла обращаться через Wb, поскольку книга, открытая кодом Set Wb = Application.Workbooks.Open(Filename ), автоматически становится активной. А вот ссылку на итоговую книгу, в которую заносятся данные, необходимо запомнить: Код:
Код:
Ну и вместо циклов типа Код:
|
28.10.2009, 02:41 | #5 |
Пользователь
Регистрация: 28.10.2009
Сообщений: 38
|
Ага, понятно...
то-то Excel у меня запрашивает подтверждение на сохранение данных. А как мне записать данные в нужную книгу, а не в текущую? (Дело в том, что я в VBA, как свинья в апельсинах - программирую с книжкой в руке) |
28.10.2009, 02:45 | #6 |
Пользователь
Регистрация: 28.10.2009
Сообщений: 38
|
Просто я на С долго программировал, мне плохо знакома объектная модель Excel, мне надо сделать один раз, чтобы один же раз отработало.
|
28.10.2009, 02:55 | #7 |
Пользователь
Регистрация: 28.10.2009
Сообщений: 38
|
о, заработало!!!
EducatedFool, можно вас как-то отблагодарить? Репутацию повысить или что-то в этом духе? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не сохраняет данные в таблицу | liienna | БД в Delphi | 18 | 02.04.2009 15:32 |
SaveDialog не сохраняет правильно | Shouldercannon | Общие вопросы Delphi | 7 | 16.06.2008 02:14 |
данные из формы в скрипт | Elm0 | PHP | 29 | 20.04.2008 19:28 |
Не сохраняет данные в таблицу! | frai | БД в Delphi | 14 | 15.09.2007 18:58 |