Имя: Пароль:
1C
1С v8
Проблема. Из экселя загружается не то.
,
0 Серов
 
17.01.12
15:31
Дело в том, что такого совсем нет в экселе. Числа другие, столбцы не те. Такое чувство, что есть скрытый лист. Пробовал копировать в другой файл, там все ок. Но пользователи будут этот присылать и хотелось бы разобраться.
1 1с-кин
 
17.01.12
15:34
вы с какого листа грузите? и вообще, с той ли книги?
2 Серов
 
17.01.12
15:35
да с той, в конце ставлю визибл=1, чтобы удостоверится. Гружу с первого и он там один (по крайне мере я один вижу)
3 dk
 
17.01.12
15:37
может чуток кода загрузки покажешь?
4 dk
 
17.01.12
15:38
про отладчик слышал?
5 1с-кин
 
17.01.12
15:42
(2) один - не один, а грузится всегда с одного указанного листа (механизм такой), если только принудительно в коде не укажешь циклом перебор и загрузку с других листов.
6 1с-кин
 
17.01.12
15:43
+ защищенные листы вообще вроде только по ADO увидишь, по Automation не позволит...
7 Серов
 
17.01.12
15:44
(3) Вот код
       Эксель = Новый COMОбъект("Excel.Application");
       Книга = Эксель.WorkBooks.Open(ПутьКФайлу);    
       Лист = Книга.WorkSheets(1);    
       НомерСтроки=6;
       ВсегоСтрок=Эксель.Cells(1,1).SpecialCells(11).Row;
       Эксель.Application.visible=1;
Как видите, все у меня просто. Откуда только что берется.
8 dk
 
17.01.12
15:46
ну а где данные-то читаешь?
9 Серов
 
17.01.12
15:56
(8) В цикле, например такой строчкой
Стр.Остаток=Число(СокрЛП(Лист.Cells(а, 4).Value));
10 Tatitutu
 
17.01.12
16:01
МолодЭц!!!
Лист у тебя есть
а для чего он у тебя есть ?
11 Серов
 
17.01.12
16:02
(10) не понял
12 dk
 
17.01.12
16:03
ну выведи какую-нить ячейку и название лист

Сообщить("Имя: " + Лист.Name);
Сообщить("В3 = " + Лист.Range("B3").Value);
13 Tatitutu
 
17.01.12
16:05
вот это
ВсегоСтрок=Эксель.Cells(1,1).SpecialCells(11).Row;
переделай (нет ссылки на твой нужный лист)

как то так

Диапозон = Эксель.Sheets(Лист).Cells;
Строк    =Диапозон.SpecialCells(11).Row;    // строка последней ячейки
Столбцов =Диапозон.SpecialCells(11).Column; // столбец последней ячейки
14 Серов
 
17.01.12
16:06
(12) Вот! Выводит имя листа не такое, которое я вижу. Это скрытый лист? Как его можно увидеть?
15 Серов
 
17.01.12
16:07
Народ, как сделать активным лист по его имени, а не по номеру?
16 Ковычки
 
17.01.12
16:09
Лист = Книга.WorkSheets(ИмяЛиста);
Диапозон = Лист.Sheets(Лист).Cells;
Строк    =Диапозон.SpecialCells(11).Row;
17 dk
 
17.01.12
16:09
Лист = Книга.WorkSheets("<Имя твоего листа>");
18 Серов
 
17.01.12
16:11
(17) Пробовал. Ошибка - к числу не может привести данное.
19 Ковычки
 
17.01.12
16:12
(16)

Лист = Книга.WorkSheets(ИмяЛиста);
Диапозон = Лист.Cells;
Строк    =Диапозон.SpecialCells(11).Row;
20 Ковычки
 
17.01.12
16:14
Листы = Книга.WorkSheets;
Для Сч = 1 По Листы.Count Цикл
   Лист = Листы.Item(Сч);
   Сообщить(Лист.Name);
КонецЦикла;
21 1с-кин
 
17.01.12
16:18
(14) выделяешь листы в Excel и делаешь "показать скрытые"
22 Серов
 
17.01.12
16:20
Народ, спасибо. Нашел скрытые листы. Они оказываются действительно есть :)
23 Dmitry77
 
17.01.12
16:27
открываю военную тайну сочетание ctrl + Page down прокручивает листы вправо, ctrl +page up влево.
24 1с-кин
 
17.01.12
16:30
(23) скрытые - это не только "за стрелочкой" которые :)
Ошибка? Это не ошибка, это системная функция.