|
|
|
|
Перебрать открытые окна 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
|
|
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.