![]() |
![]() |
![]() |
|
Как обойти страницы книги Exel в цикле? | ☑ | ||
---|---|---|---|---|
0
Fish
гуру
23.10.08
✎
14:18
|
Добрый день. У меня небольшая проблемка:
Открываю файл экселя как комобъект: Экс = Новый COMОбъект("Excel.Application"); Книга = Экс.WorkBooks.Open(ПутьКЭкселю); НомерСтраницыВКниге = 1; ВсегоСтраницВКниге = Книга.WorkSheets.Count; далее хочу обойти страницы книги в цикле: Пока НомерСтраницыВКниге <= ВсегоСтраницВКниге Цикл Страница = Книга.WorkSheets(НомерСтраницыВКниге); ТекСтраница = Книга.Worksheets(Страница.Name).Activate; ... ... КонецЦикла; Ругается, что "Поле объекта не обнаружено (Activate)", подскажите как перебрать страницы. |
|||
1
111222333444
23.10.08
✎
14:25
|
Без скобок происходит обращение к свойствам. В данном случае нужен метод. Соответственно - Activate()
|
|||
2
dk
23.10.08
✎
14:26
|
ТекСтраница = Книга.Worksheets(Страница.Name).Activate;
заменить на Страница.Activate(); |
|||
3
Fragster
гуру
23.10.08
✎
14:27
|
А зачем ее активировать? данные и так тырить через Книга.Worksheets(Страница.Name).Cells(x,y).value можно
|
|||
4
Kolyasik
23.10.08
✎
14:28
|
а зачем активейт? ты и так получил страницу... делай с ней что хочешь... %)
|
|||
5
smaharbA
23.10.08
✎
14:28
|
либо |
|||
6
Voffka
23.10.08
✎
14:36
|
Excel = новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайлаЭксель); //WorkBooks = Эксель.WorkBooks(); КоличествоЛистовКниги = Excel.Sheets().count(); //Сообщить("КоличествоЛистовКниги " + КоличествоЛистовКниги); Лист = Excel.Sheets(1); ИмяЛиста = Лист.Name(); Для Каждого ТекЛист Из Excel.Sheets() Цикл гчНомерЗакладки = гчНомерЗакладки + 1; ИмяЛиста = ТекЛист.Name(); Если Найти(ИмяЛиста, "Протокол") > 0 Тогда Продолжить; КонецЕсли; ЗагрузитьЛист(ТекЛист); КонецЦикла; Excel.Application.Quit(); |
|||
7
smaharbA
23.10.08
✎
14:39
|
(6) с просто щетсами и обломаешься
|
|||
8
Fish
гуру
23.10.08
✎
14:41
|
(2) Спасибо, все получилось.
(3) Просто до меня обработка была заточена под файлы с одним листом, и данные там читаются через Экс.Cells проще страницу активировать, чем все переписывать. |
|||
9
Fragster
гуру
23.10.08
✎
14:43
|
(8) зачем переписывать?
Пока НомерСтраницыВКниге <= ВсегоСтраницВКниге Цикл Страница = Книга.WorkSheets(НомерСтраницыВКниге); ТекСтраница = Книга.Worksheets(Страница.Name); ... ... КонецЦикла; |
|||
10
Voffka
23.10.08
✎
14:43
|
(7) В чем?
|
|||
11
smaharbA
23.10.08
✎
14:44
|
(10) щетс это не только электронные таблицы, но к примеру и диаграммы и еще чего может быть...
|
|||
12
dk
23.10.08
✎
14:44
|
(9) мимо
|
|||
13
Voffka
23.10.08
✎
14:45
|
(11) Ну я заведомо знаю что там нету диаграм, но за совет спс.
|
|||
14
dk
23.10.08
✎
14:46
|
(13) я бы еще "попинал" за обращение к пропертям с () на конце :)
|
|||
15
Voffka
23.10.08
✎
14:49
|
(14) Не надо :)
|
|||
16
b_ru
23.10.08
✎
14:58
|
а зачем Activate() ? Просто переменная Страница в твоем коде и будет тем что нужно.
|
|||
17
Fish
гуру
23.10.08
✎
15:22
|
(16) я в (8) написал, что данные с листа берутся через Экс.Cells - т.е. из активной страницы Экс.ActiveSheet. т.е. Страница перебирается, а активная страница - нет.
|
|||
18
b_ru
23.10.08
✎
15:35
|
(17) Страница.Cells...
|
|||
19
dk
23.10.08
✎
15:36
|
(18) читай (8) до полного просветления :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |