Имя: Пароль:
1C
1С v8
Берется не та страница в xls
0 espanol
 
27.06.12
18:20
Excel               = Новый COMОбъект("Excel.Application");
   Excel.DisplayAlerts = 0;
   ExcelBooks          = Excel.Workbooks.Open(ВыбФайл.ПолноеИмя);
   Excel.ActiveWorkbook.RunAutoMacros(1);
   
   ГруппаАксессуарыСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Аксессуары");
   Если ГруппаАксессуарыСсылка.Пустая() Тогда
       ГруппаАксессуары = Справочники.Номенклатура.СоздатьГруппу();
       ГруппаАксессуары.Наименование       = "Аксессуары";
       ГруппаАксессуары.СтавкаНДС          = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;
       ГруппаАксессуары.ВалютаУчета        = Константы.ВалютаРегламентированногоУчетаОрганизаций.Получить();
       ГруппаАксессуары.ВидНоменклатуры    = Перечисления.ВидыНоменклатуры.Аксессуары;
       ГруппаАксессуары.ТипНоменклатуры    = Справочники.ТипыНоменклатуры.Штучный;
       ГруппаАксессуары.УстановитьНовыйКод();
       ГруппаАксессуары.Записать();
       ГруппаАксессуарыСсылка = ГруппаАксессуары.Ссылка;
   КонецЕсли;
   
   Для КолВаЛистов = 1 По Excel.Sheets.Count-2 Цикл
       ОбработкаПрерыванияПользователя();
       
       ТекущийЛист      = Excel.Sheets(КолВаЛистов);
       ИмяТекущегоЛиста = ExcelBooks.Sheets(КолВаЛистов).Name;
       ФайлСтрок        = ТекущийЛист.Cells(1,1).SpecialCells(11).Row;
       ФайлКолонок      = ТекущийЛист.Cells(1,1).SpecialCells(11).Column;
       
       Для Строка = 2 По ФайлСтрок Цикл
           
           Модель       = СокрЛП(Excel.Cells(Строка, 1).Value);
           Наименование = СокрЛП(Excel.Cells(Строка, 2).Value);
           Артикул      = СокрЛП(Excel.Cells(Строка, 3).Value);
           Количество   = СокрЛП(Excel.Cells(Строка, 4).Value);
           Стоимость    = СокрЛП(Excel.Cells(Строка, 5).Value);
           Группа       = СокрЛП(Excel.Cells(Строка, 6).Value);


Почему сразу начинает читать со 2 страницы?
1 viktor_vv
 
27.06.12
18:22
Может там с 0 нумерация идет.
2 espanol
 
27.06.12
18:23
(1) нет
3 oleg_prg
 
27.06.12
18:32
Пробуй вот так
Для КолВаЛистов = 1 По Excel.Sheets.Count Цикл
4 espanol
 
27.06.12
18:33
(3) мне последние 2 листа не нужны
5 oleg_prg
 
27.06.12
18:34
После цикла поставь
Если КолВаЛистов > Excel.Sheets.Count-2 Тогда
   Продолжить;
КонецЕсли;
6 oleg_prg
 
27.06.12
18:35
Вот мой рабочий пример

ОкноExcel =  Новый COMОбъект("Excel.Application");
   ОкноExcel.Workbooks.Open(СокрЛП(Файл));    
   Для А = 1 По ОкноExcel.Worksheets.Count Цикл
       ЛИСТЫ.НоваяСтрока();
       ЛИСТЫ.Имя = ОкноExcel.Worksheets(А).Name;            
   КонецЦикла;    
   ПоказатьДанные();

Должно работать!!!
7 oleg_prg
 
27.06.12
18:36
мне кажется что что-то неправильно со счетчиком в цикле
8 oleg_prg
 
27.06.12
18:37
Попробуй сделать так

Для КолВаЛистов = 1 По Excel.Sheets.Count-2 Цикл
       ОбработкаПрерыванияПользователя();
       
       ТекущийЛист      = Excel.Sheets(1);  //сюда поставь 1 - что получается - с первого листа или опять глюк?
       ИмяТекущегоЛиста = ExcelBooks.Sheets(КолВаЛистов).Name;
       ФайлСтрок        = ТекущийЛист.Cells(1,1).SpecialCells(11).Row;
       ФайлКолонок      = ТекущийЛист.Cells(1,1).SpecialCells(11).Column;
9 espanol
 
27.06.12
18:45
(8) пробую
10 oleg_prg
 
27.06.12
18:50
Вроде вот рабочий код

Excel               = Новый COMОбъект("Excel.Application");
   Excel.DisplayAlerts = 0;
   ExcelBooks          = Excel.Workbooks.Open(ВыбФайл.ПолноеИмя);
   Excel.ActiveWorkbook.RunAutoMacros(1);
   
   ГруппаАксессуарыСсылка = Справочники.Номенклатура.НайтиПоНаименованию("Аксессуары");
   Если ГруппаАксессуарыСсылка.Пустая() Тогда
       ГруппаАксессуары = Справочники.Номенклатура.СоздатьГруппу();
       ГруппаАксессуары.Наименование       = "Аксессуары";
       ГруппаАксессуары.СтавкаНДС          = Справочники.СтавкиНДС.ОсновнаяСтавкаНДС;
       ГруппаАксессуары.ВалютаУчета        = Константы.ВалютаРегламентированногоУчетаОрганизаций.Получить();
       ГруппаАксессуары.ВидНоменклатуры    = Перечисления.ВидыНоменклатуры.Аксессуары;
       ГруппаАксессуары.ТипНоменклатуры    = Справочники.ТипыНоменклатуры.Штучный;
       ГруппаАксессуары.УстановитьНовыйКод();
       ГруппаАксессуары.Записать();
       ГруппаАксессуарыСсылка = ГруппаАксессуары.Ссылка;
   КонецЕсли;
   
   Для КолВаЛистов = 1 По Excel.Sheets.Count Цикл
       ОбработкаПрерыванияПользователя();
       Если КолВаЛистов > Excel.Sheets.Count-1 Тогда
   Продолжить;
КонецЕсли;
       ТекущийЛист      = Excel.Sheets(КолВаЛистов);
       ИмяТекущегоЛиста = ExcelBooks.Sheets(КолВаЛистов).Name;
       ФайлСтрок        = ТекущийЛист.Cells(1,1).SpecialCells(11).Row;
       ФайлКолонок      = ТекущийЛист.Cells(1,1).SpecialCells(11).Column;
       
       Для Строка = 2 По ФайлСтрок Цикл
           
           Модель       = СокрЛП(Excel.Cells(Строка, 1).Value);
           Наименование = СокрЛП(Excel.Cells(Строка, 2).Value);
           Артикул      = СокрЛП(Excel.Cells(Строка, 3).Value);
           Количество   = СокрЛП(Excel.Cells(Строка, 4).Value);
           Стоимость    = СокрЛП(Excel.Cells(Строка, 5).Value);
           Группа       = СокрЛП(Excel.Cells(Строка, 6).Value);
11 oleg_prg
 
27.06.12
18:55
еще можно вот так обратиться к ячейке листа
ОкноExcel.Worksheets(НомерЛиста).Range("A1").Value