Перебрать открытые окна Exel
☑
0
xenos
13.09.12
✎
11:51
Есть несколько открытых файлов Exel(не сохраненные), нужно получить из них данные в 1С.
Как к ним обратится?
1
МихаилМ
13.09.12
✎
11:59
естественно как к колекции.
к какой колекции, Вам подскажет запись макроса
2
xenos
13.09.12
✎
12:01
(1) Запись макроса учете переход между разными окнами? Сомневаюсь.
3
dk
13.09.12
✎
12:08
Если они в пределах 1 application, то через коллекцию WorkBooks
А вот если application разные ..., то надо придумать как все application перебрать
4
МихаилМ
13.09.12
✎
12:11
(3)
для этого уже лет 15 есть wmi
5
dk
13.09.12
✎
12:13
wmi вернет список процессов, а вот как к этому процессу цепануться по OLE - хз
6
xenos
13.09.12
✎
12:15
В visual basic
Работает:
Sub xxx()
Dim wbBook As Workbook
For Each wbBook In Workbooks
MsgBox (wbBook.Name)
Next wbBook
End Sub
7
dk
13.09.12
✎
12:18
Эк = ПолучитьCOMобъект(,"Excel.Application");
Для Каждого Книга Из Эк.WorkBooks Цикл
Сообщить(Книга.Name);
КонецЦикла
8
xenos
13.09.12
✎
12:23
(7) Спасибо большое, а то я вместо "ПолучитьCOMобъект(,"Excel.Application");" использовал "Новый COMОбъект("Excel.Application");"
Может кому понадобится
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
ExcelПриложение = ПолучитьCOMобъект(,"Excel.Application");
Для каждого Книга из ExcelПриложение.WorkBooks Цикл
ExcelЛист = Книга.Sheets(1);
Сообщить("зхз"+ СокрЛП(ExcelЛист.Cells(1, 1).Value));
КонецЦикла;
КонецПроцедуры
9
dk
13.09.12
✎
12:28
но это внутри 1 аппликейшена, если разные (например несколько раз запусти пуск - выполнить - Excel и пооткрывай там файлы) то скорее всего облом будет
10
xenos
13.09.12
✎
12:31
(9) Мне из паруса нужно данные выгрузить. А он сам открывает несколько окон Exel
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший