Имя: Пароль:
1C
1С v8
Перебрать открытые окна 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
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший