|
Интеграция с Excel |
☑ |
0
Lohmatiy
31.07.14
✎
14:43
|
Коллеги, добрый день!
Мучаюсь со старой как мир проблемой. Называется она "интеграция с Excel".
Что, собственно, хочу сделать. У меня есть два файла Excel, из которых мне нужно подтянуть данные. Я делаю, вкратце, следующее:
Excel = Новый COMОбъект("Excel.Application");
Excel.AskToUpdateLinks = Ложь;
Excel.DisplayAlerts = Ложь;
Excel.Visible = Ложь;
РабочаяКнига = Excel.Workbooks.Open(ПутьКФайлу);
// обработали ее всячески
РабочаяКнига.Close();
РабочаяКнига = Неопределено;
РабочаяКнига = Excel.Workbooks.Open(ПутьКФайлу2);
// опять же обрабатываем
РабочаяКнига.Close();
РабочаяКнига = Неопределено;
Excel.Quit();
Excel = Неопределено;
Что происходит на деле. Сначала открывается эксель. Соответственно, в диспетчере задач видно, что завелся один процесс, потом после закрытия рабочей книги процесс остается. При открытии второй книги появляется новый процесс. Система в этот момент еще жива. Зато при попытке закрыть вторую книгу она намертво виснет до тех пор, пока я не убью оба этих процесса. Что же мне делать, если очень хочется открывать обе книги?
|
|
1
fmrlex
31.07.14
✎
14:55
|
Будь мужиком, делай как Маня. Открой файл экселя архиватором, достань xml'ки и работай напрямую.
|
|
2
andreymongol82
31.07.14
✎
15:00
|
ADODB наше все!
|
|
3
fmrlex
31.07.14
✎
15:01
|
(2) Да ну нафиг.
(0) На
Сломи Маню.
|
|
4
_fvadim
31.07.14
✎
15:03
|
отключи предупреждения или сделай РабочаяКнига.saved = истина
возможно эксель там вопросы задаёт - проверить чо он хочет можно, если не прятать его в самом начале Excel.Visible = истина;
|
|
5
andreymongol82
31.07.14
✎
15:05
|
(3) А вдрух у него там у Excel старый-старый. 97 например)))
|
|
6
Lohmatiy
31.07.14
✎
15:07
|
(1) долго, там большие объемы
(2) нет)))
(4) предупреждения, как раз, отключены. Через Saved сейчас попробую.
(5) нет, XL 2013 на одной машине и 2010 на другой.
|
|
7
Garykom
гуру
31.07.14
✎
15:07
|
(0) ну сделай ты Excel.Visible = Истина;
и будет тебе счастье...
ЗЫ хотя положено ссылки (переменные) еще очистить после закрытия excel'я ))
|
|
8
Garykom
гуру
31.07.14
✎
15:08
|
(7) глянул код в (0) эта не делай так закрывай ексель и открывай заново после каждого файла...
|
|
9
_fvadim
31.07.14
✎
15:10
|
(8) это ещё зачем? оно и с одним экселем прекрасно работает.
|
|
10
Repey
31.07.14
✎
15:11
|
А как при работе с десятым екселем можно использовать метод "SaveAs" ?
|
|
11
_fvadim
31.07.14
✎
15:11
|
(9) +
писал программульку для печати 100500 экселек (не на 1с). каждый раз эксель открывать/закрывать - лишний тормоз.
|
|
12
Lohmatiy
31.07.14
✎
15:16
|
(11) Saved помогло, супер! Спасибо!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший