![]() |
![]() |
![]() |
|
перебор листов в рабочей книге .xls при загрузке | ☑ | ||
---|---|---|---|---|
0
SuperLiving Star
25.03.10
✎
12:27
|
стоит задача загрузки прайс листов с нескольких листов рабочей книги .xls. Как можно загружать сначало с одного листа, потом переходить к следующему и загружать с него и так по их количеству?
|
|||
1
Rie
25.03.10
✎
12:29
|
(0) Циклом :-)
Для НомерЛиста=1 По Книга.Worksheets.Count Цикл Лист = Книга.Worksheets(НомерЛиста); // загружаем, загружаем КонецЦикла; |
|||
2
SuperLiving Star
25.03.10
✎
12:30
|
вопрос в том как перемещаться по листам после загрузки с текущего, как происходит перемещение по ним?
|
|||
3
aka AMIGO
25.03.10
✎
12:30
|
вообще я номер листа (по требованию юзера) указываю на форме отчета:
Попытка НашЛист = НашФайл.Sheets(НомерЛиста); //Устанавливаем нужный лист Исключение Предупреждение("Указан несуществующий номер листа! = "+НомерЛиста); ОбЭксел.WorkBooks.close(); ОбЭксел.Quit(); Возврат; КонецПопытки; но ничего не стоит приделать это к циклу |
|||
4
SuperLiving Star
25.03.10
✎
12:31
|
(1) а если вот это загружает с текущего листа, то есть считывает значения, как задавать обработку конкретного листа?
xl.WorkBooks.Open(СокрЛП(Путь), 0, 1); rows = xl.ActiveSheet.UsedRange.Rows.Count; НачатьТранзакцию(); Для row = 1 По rows Цикл Деталь = СокрЛП(xl.Cells(row,1). Text); // 1. нужен Марка = СокрЛП(xl.Cells(row,2). Text); // 2. нужен Модель = СокрЛП(xl.Cells(row,3). Text); // 3. нужен |
|||
5
Rie
25.03.10
✎
12:32
|
(2) Что в (1) непонятно?
Или же - как происходит загрузка с листа (как указан в ней текущий лист)? |
|||
6
aka AMIGO
25.03.10
✎
12:33
|
(5) имхо - не успел прочитать :)
|
|||
7
SuperLiving Star
25.03.10
✎
12:33
|
(3) то есть пользователь ставит номер листа?
у меня просто есть прайс где несколько листов, хочется загрузить их все сразу... А вообще тема у вас хорошая! |
|||
8
Rie
25.03.10
✎
12:33
|
(4) Если с текущего листа - то и сделай текущим лист с номером НомерЛиста в (1):
xl.Worksheets(НомерЛиста).Activate() если мне память не изменяет. Хотя грузить с текущего листа - не есть хорошо. |
|||
9
SuperLiving Star
25.03.10
✎
12:35
|
(5)ну да, как устанавливать загрузку с нужного листа? Исходя из (4) ...
|
|||
10
bake
25.03.10
✎
12:36
|
WS=WB.Sheets(Страница);
Страница на форме |
|||
11
bake
25.03.10
✎
12:38
|
WB = Excel.Workbooks.Open(СокрЛП(Путь));
|
|||
12
SuperLiving Star
25.03.10
✎
12:38
|
(+5) перебераю листы потом перед обработкой активирую каждый лист, обрабатываю и перехожу к следующему?
|
|||
13
SuperLiving Star
25.03.10
✎
12:40
|
(11) Это открытие конкретного файла эксель....
я его уже открыл ->(4), сейчас выясняю как загрузить данные со всех имеющихся у него листов так как их там несколько... |
|||
14
Rie
25.03.10
✎
12:41
|
(12) Можно так.
Но, IMHO, лучше заменить в этой самой загрузке xl.Cells(...) на Лист.Cells(...), а в начале загрузки поставить Лист = xl.Sheets(НомерЛиста); |
|||
15
Ахиллес
25.03.10
✎
12:45
|
А вот еще интересный вопрос :-) как грузить из экселевского файла когда в нем нет листов? Такая фигня происходит, когда из 1С в эксель через (_!_) выгружают. я так понял, что создается не книга с листами а только один лист. Приходилась в экселе создавать файл и копировать туда информацию. Может есть другой способ?
|
|||
16
Chum
25.03.10
✎
12:48
|
(15) Гонишь! Там есть лист и называется он "Sheet1". Сервис - параметры - вид - ярлычки листов
|
|||
17
SuperLiving Star
25.03.10
✎
13:04
|
(14) то есть вот так?
xl.WorkBooks.Open(СокрЛП(Путь), 0, 1); Для НомерЛиста=1 По xl.Worksheets.Count Цикл Лист = xl.Sheets(НомерЛиста); // загружаем, загружаем Лист.Cells(...обработка... КонецЦикла; |
|||
18
SuperLiving Star
25.03.10
✎
13:10
|
(+17) или...
// *>>> перебор имеющихся листов рабочей книги и загрузка с них номенклатуры xl.WorkBooks.Open(СокрЛП(Путь), 0, 1); Для ListNumber = 1 По xl.Worksheets.Count Цикл List = xl.Sheets(ListNumber); // загружаем, загружаем xl.Worksheets(List).Activate() rows = xl.ActiveSheet.UsedRange.Rows.Count; List.Cells(...обработка... КонецЦикла; |
|||
19
dk
25.03.10
✎
13:18
|
(17) нормуль
(18) не нормуль, зачем тебе activesheet? щас придет абрахамс и наругается ))) |
|||
20
Гость2
25.03.10
✎
13:22
|
(18) А теперь перейди на OFF: Поступили первые пожертвования на хостинг мисты - 2200 руб. Спасибо!
|
|||
21
smaharbA
25.03.10
✎
13:26
|
(19) голова болит, лениво ругаться ))
|
|||
22
SuperLiving Star
25.03.10
✎
13:30
|
xl.Worksheets(List).Activate();
вот это не правильно, выдается ошибка ( |
|||
23
smaharbA
25.03.10
✎
13:32
|
Как то так
Переход на другой лист в Excel |
|||
24
SuperLiving Star
25.03.10
✎
13:34
|
(19) да просто я сейчас на Mandriva и тут с клавиатурой проблема что то не дописал... Сейчас вот проверяю перебор листов, пока что не удачно (
|
|||
25
SuperLiving Star
25.03.10
✎
13:42
|
xl.WorkBooks.Open(ÑîêðËÏ(Ïóòü), 0, 1);
Для ListNumber = 1 Ïî xl.Worksheets.Count Цикл List = xl.Sheets(ListNumber); rows = List.UsedRange.Rows.Count; КонецЕсли сработало! СПАСИБО! |
|||
26
smaharbA
25.03.10
✎
13:51
|
(25) за такой код из рогатки отстреливают
|
|||
27
Ахиллес
25.03.10
✎
16:40
|
(16) Не гоню. При обращении к листу "Sheet1" либо "Лист1" выдает ошибку.
|
|||
28
dk
25.03.10
✎
16:42
|
(27) WorkSheets(1)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |