|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2012, 23:35 | #1 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 21
|
Открыть книгу Excel в Excel
Подскажите в чём ошибка макроса:
Set app = CreateObject("excel.application") app.Visible = False Set wkb = app.Workbooks.Open("C:\test.xls") wkb.Sheets("Лист1").Range("A1:M700" ).Copy ThisWorkbook.Sheets("Лист2").Range( "A1").Select ActiveCell.Paste цель: из test.xls из листа1 скопировать все данные в лист2 текущего файла... |
14.06.2012, 01:12 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ошибка в том, что открываете другой экземпляр Экселя.
webmoney: E265281470651 Z422237915069 R418926282008
|
14.06.2012, 07:26 | #3 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 21
|
|
14.06.2012, 08:04 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Если Вы хотите скопировать данные, чтобы не было видно процесса открытия и закрытия файла-источника, томожно просто запретить обновление экрана. Например, так:
Код:
Чем шире угол зрения, тем он тупее.
|
14.06.2012, 09:23 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Или можно так:
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
15.06.2012, 22:36 | #6 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 21
|
спасиб!
не понял одно - как сравнить список из 12 тыс значений с 3 стами, причём 12 тыс перебирать по-одному? в стиле RC можно сделать как PHP код:
PHP код:
|
15.06.2012, 22:45 | #7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ох...
Бросьте это дело - изучайте сразу код на массивах и словаре. Тут рядом совсем: http://www.programmersforum.ru/showthread.php?t=205139 Кстати, сейчас потестю, сколько секунд будет 80000 сравнивать с 50000... Проверил - 52136<->87531 строк сравнивает 1.5 секунды. Правда в примере всего одно совпадение, так что копировать ничего не приходится Ну копирование может ещё секунду заняло бы... Да, так и есть - имитация копирования всего диапазона (т.е.100% совпадение при сверке) добавило чуть меньше секунды.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 15.06.2012 в 22:58. Причина: Поменял Уф на Ох - чтоб с толку не сбивать :) |
15.06.2012, 22:51 | #8 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 21
|
гыгы, ок, разберусь)
на самом деле это лучче т.к. реально под 10 мин excel шарахал подобные мои коды) |
15.06.2012, 23:09 | #9 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 21
|
у меня 2 диапазона, т.е. 2 столбца. один я указываю вместо М, второй - вместо b, а что делать с c и bb ?
|
15.06.2012, 23:15 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Сравниваются диапазоны a и b. В c копируются данные из bb - в данном случае это параллельные массивы, но тут возможны варианты, смотря по задаче.
Главное сам принцип - через массив запоминаем один диапазон в словаре, затем так же через массив проверяем второй диапазон по словарю. Массивы - не принципиально, можно и напрямую с листом работать, но это в 40 раз медленнее.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 15.06.2012 в 23:21. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно перевести книгу с макросом из 2007 в 2003 Excel? | Алекс7 | Microsoft Office Excel | 5 | 15.10.2011 09:21 |
открыть скриптом файл Excel | alvazor | Microsoft Office Excel | 9 | 04.06.2010 16:56 |
Открыть из Delphi файл Excel | masterdela | Общие вопросы Delphi | 5 | 30.03.2010 10:47 |
Макрос открывающий книгу Excel. | agregator | Microsoft Office Word | 4 | 10.07.2009 21:41 |
Как открыть лист в excel | Alexi | Общие вопросы Delphi | 4 | 05.07.2009 22:42 |