Вход | Регистрация


1С:Предприятие ::

Метки: 

v7: Чтение из Excel файла.

Я
   zenon46
 
15.11.17 - 12:00
Доброго дня!
Помогите разобраться почему не считывается из Excel файла. Структура файла простая, и заранее известна, но 1С выдает ошибку.
"ТаблЗагрузки.ТабНомер = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value));
{Документ.ВыплатаЗПКасса.Форма.Модуль(378)}: : "

Сам код :

    Перем ИмяФайла, ИмяКаталога;
        
    Фс.ВыбратьФайл(0, ИмяФайла, ИмяКаталога , "Выберите файл", 'Файлы Excel (*.xls) |*.xls');
    
    ТаблЗагрузки = СоздатьОбъект("ТаблицаЗначений");
    ТаблЗагрузки.НоваяКолонка("ТабНомер");
    ТаблЗагрузки.НоваяКолонка("ФИОСотрудн");
    ТаблЗагрузки.НоваяКолонка("СуммаКВыплате");
    Состояние("Загрузка файла...");
    Эксэл = СоздатьОбъект("Excel.Application");    
    Состояние("Открытие Excel");
    Эксэл.Workbooks.Open(СокрЛП(ИмяКаталога+ИмяФайла));
    Для НомерСтроки = 2 По 255 Цикл
        ТаблЗагрузки.НоваяСтрока();
        ТаблЗагрузки.ТабНомер      = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value));
        ТаблЗагрузки.ФИОСотрудн    = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,2).Value));
        ТаблЗагрузки.СуммаКВыплате = Число((Эксэл.ActiveSheet.Cells(НомерСтроки,3).Value));
    КонецЦикла;
    Эксэл.WorkBooks.Close();
    Эксэл = "";
 
 
   Builder
 
1 - 15.11.17 - 12:02
Ковычку убери
   Builder
 
2 - 15.11.17 - 12:03
(1) Не, не то :)
Какая ошибка то?
   Михаил Козлов
 
3 - 15.11.17 - 12:05
Попробуйте вместо Строка(...Value) прочитать Text.
Посмотрите в отладчике на каком номере строки падает.
   Zmich
 
4 - 15.11.17 - 12:06
Вместо ActiveSheet можно попробовать WorkSheets(1)
   zenon46
 
5 - 15.11.17 - 12:07
(4) таже ошибка
   zenon46
 
6 - 15.11.17 - 12:09
(3) падает на первой итерации. а что значит Text ?
   zenon46
 
7 - 15.11.17 - 12:09
(2) вот именно что в ошибке ничего 
"Документ.ВыплатаЗПКасса.Форма.Модуль(378)}: : "
   aka AMIGO
 
8 - 15.11.17 - 12:11
(6) Это значит, вместо
 ТаблЗагрузки.ТабНомер      = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value));

написать
ТаблЗагрузки.ТабНомер      = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Text));

или
ТаблЗагрузки.ТабНомер      = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).String));
   Масянька
 
9 - 15.11.17 - 12:11
(7) Так покажи строку (кода) с ошибкой. 378.
   zenon46
 
10 - 15.11.17 - 12:12
(9) ТаблЗагрузки.ТабНомер = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value));
 
 Рекламное место пустует
   Builder
 
11 - 15.11.17 - 12:13
Эксель то открывается?
   Масянька
 
12 - 15.11.17 - 12:14
(10) Перед этой строкой:
сообщить("! - " + Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value);
что выведет?
   zenon46
 
13 - 15.11.17 - 12:15
(12) сообщить("! - " + Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value);
{Документ.ВыплатаЗПКасса.Форма.Модуль(378)}: :

На компе стоит Excel 2016 (для справки)
   zenon46
 
14 - 15.11.17 - 12:16
(11) да процесс запускается
   Масянька
 
15 - 15.11.17 - 12:18
(14) Процесс-то запускается... А дальше...
У меня так работает:
    Excel    = СоздатьОбъект("Excel.Application"); 
    Книга     = Excel.Application.Workbooks.Open(ИмяФайлаЗагрузки); 
    Лист     = Книга.WorkSheets(1);
   zenon46
 
16 - 15.11.17 - 12:19
(15) а дальше что, разве файл должен открываться для визуального отображения ?
   Остап Сулейманович
 
17 - 15.11.17 - 12:20
За activeworkbook, activesheet, activecell ... нужно выгонять из профессии.
   Масянька
 
18 - 15.11.17 - 12:21
(16) Как хочешь... Но процесс (в данном случае Excel) и файл (*.xls) - разные весчи...
   Jokerman
 
19 - 15.11.17 - 12:22
(0) а зачем 2 раза скобки
   Builder
 
20 - 15.11.17 - 12:22
(16) Должен, если не сказать что бы не показывался.
   zenon46
 
21 - 15.11.17 - 12:23
(15) сделал так, в переменных пусто.
   Builder
 
22 - 15.11.17 - 12:23
В общем похоже неправильно открываешь файл.
   Builder
 
23 - 15.11.17 - 12:24
(21) Чем смотрел и и что ты там хотел увидеть?
   zenon46
 
24 - 15.11.17 - 12:24
(23) а чем еще отладчиком
   Builder
 
25 - 15.11.17 - 12:29
Дальше то пробовал?
ЧтоТоТам = Лист.Cells(НомерСтроки,1).Value;
   Масянька
 
26 - 15.11.17 - 12:31
(21) Что в файле? Excel.
   zenon46
 
27 - 15.11.17 - 12:32
(25) да прочиталось значение
   Builder
 
28 - 15.11.17 - 12:33
(27) Алилуя.
И таки смотреть отладчиком чужие объекты бесполезно :)
   Масянька
 
29 - 15.11.17 - 12:33
(27) Проблема решена?
   zenon46
 
30 - 15.11.17 - 12:42
(29) нифига не пойму, а в цикле падает в ошибку.
   Builder
 
31 - 15.11.17 - 12:43
(30) На какой строке? Модуль и ошибку в студию.
Формул нет на листе?
   zenon46
 
32 - 15.11.17 - 12:44
(31) все норм прочиталось. можно ли как то узнать после открытия сколько строк вообще с данными ?
   Остап Сулейманович
 
33 - 15.11.17 - 12:48
(32) смотри VBA SpecialCells.
 
 
   aka AMIGO
 
34 - 15.11.17 - 12:48
(32)
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

Попробуй
   aka AMIGO
 
35 - 15.11.17 - 12:49
   Остап Сулейманович
 
36 - 15.11.17 - 12:50
(34) Лист.Cells.SpecialCells(11).Row
В Cells не обязательно обращаться к конкретной ячейке. Можно сразу ко всей коллекции.
   zenon46
 
37 - 15.11.17 - 12:51
(34) да получилось
Всем спасибо!
   aka AMIGO
 
38 - 15.11.17 - 12:51
(36) Да, спасибо.
   Масянька
 
39 - 15.11.17 - 13:14
КолВоСтрок = Excel.Cells.CurrentRegion.Rows.Count;



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует