|
v7: Чтение из Excel файла. | ☑ | ||
---|---|---|---|---|
0
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(); Эксэл = ""; |
|||
1
Builder
15.11.17
✎
12:02
|
Ковычку убери
|
|||
2
Builder
15.11.17
✎
12:03
|
(1) Не, не то :)
Какая ошибка то? |
|||
3
Михаил Козлов
15.11.17
✎
12:05
|
Попробуйте вместо Строка(...Value) прочитать Text.
Посмотрите в отладчике на каком номере строки падает. |
|||
4
Zmich
15.11.17
✎
12:06
|
Вместо ActiveSheet можно попробовать WorkSheets(1)
|
|||
5
zenon46
15.11.17
✎
12:07
|
(4) таже ошибка
|
|||
6
zenon46
15.11.17
✎
12:09
|
(3) падает на первой итерации. а что значит Text ?
|
|||
7
zenon46
15.11.17
✎
12:09
|
(2) вот именно что в ошибке ничего
"Документ.ВыплатаЗПКасса.Форма.Модуль(378)}: : " |
|||
8
aka AMIGO
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.
|
|||
10
zenon46
15.11.17
✎
12:12
|
(9) ТаблЗагрузки.ТабНомер = Строка((Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value));
|
|||
11
Builder
15.11.17
✎
12:13
|
Эксель то открывается?
|
|||
12
Масянька
15.11.17
✎
12:14
|
(10) Перед этой строкой:
сообщить("! - " + Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value); что выведет? |
|||
13
zenon46
15.11.17
✎
12:15
|
(12) сообщить("! - " + Эксэл.ActiveSheet.Cells(НомерСтроки,1).Value);
{Документ.ВыплатаЗПКасса.Форма.Модуль(378)}: : На компе стоит Excel 2016 (для справки) |
|||
14
zenon46
15.11.17
✎
12:16
|
(11) да процесс запускается
|
|||
15
Масянька
15.11.17
✎
12:18
|
(14) Процесс-то запускается... А дальше...
У меня так работает: Excel = СоздатьОбъект("Excel.Application"); Книга = Excel.Application.Workbooks.Open(ИмяФайлаЗагрузки); Лист = Книга.WorkSheets(1); |
|||
16
zenon46
15.11.17
✎
12:19
|
(15) а дальше что, разве файл должен открываться для визуального отображения ?
|
|||
17
Остап Сулейманович
15.11.17
✎
12:20
|
За activeworkbook, activesheet, activecell ... нужно выгонять из профессии.
|
|||
18
Масянька
15.11.17
✎
12:21
|
(16) Как хочешь... Но процесс (в данном случае Excel) и файл (*.xls) - разные весчи...
|
|||
19
Jokerman
15.11.17
✎
12:22
|
(0) а зачем 2 раза скобки
|
|||
20
Builder
15.11.17
✎
12:22
|
(16) Должен, если не сказать что бы не показывался.
|
|||
21
zenon46
15.11.17
✎
12:23
|
(15) сделал так, в переменных пусто.
|
|||
22
Builder
15.11.17
✎
12:23
|
В общем похоже неправильно открываешь файл.
|
|||
23
Builder
15.11.17
✎
12:24
|
(21) Чем смотрел и и что ты там хотел увидеть?
|
|||
24
zenon46
15.11.17
✎
12:24
|
(23) а чем еще отладчиком
|
|||
25
Builder
15.11.17
✎
12:29
|
Дальше то пробовал?
ЧтоТоТам = Лист.Cells(НомерСтроки,1).Value; |
|||
26
Масянька
15.11.17
✎
12:31
|
(21) Что в файле? Excel.
|
|||
27
zenon46
15.11.17
✎
12:32
|
(25) да прочиталось значение
|
|||
28
Builder
15.11.17
✎
12:33
|
(27) Алилуя.
И таки смотреть отладчиком чужие объекты бесполезно :) |
|||
29
Масянька
15.11.17
✎
12:33
|
(27) Проблема решена?
|
|||
30
zenon46
15.11.17
✎
12:42
|
(29) нифига не пойму, а в цикле падает в ошибку.
|
|||
31
Builder
15.11.17
✎
12:43
|
(30) На какой строке? Модуль и ошибку в студию.
Формул нет на листе? |
|||
32
zenon46
15.11.17
✎
12:44
|
(31) все норм прочиталось. можно ли как то узнать после открытия сколько строк вообще с данными ?
|
|||
33
Остап Сулейманович
15.11.17
✎
12:48
|
(32) смотри VBA SpecialCells.
|
|||
34
aka AMIGO
15.11.17
✎
12:48
|
(32)
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Попробуй |
|||
35
aka AMIGO
15.11.17
✎
12:49
|
(34) + 1с и Excel
|
|||
36
Остап Сулейманович
15.11.17
✎
12:50
|
(34) Лист.Cells.SpecialCells(11).Row
В Cells не обязательно обращаться к конкретной ячейке. Можно сразу ко всей коллекции. |
|||
37
zenon46
15.11.17
✎
12:51
|
(34) да получилось
Всем спасибо! |
|||
38
aka AMIGO
15.11.17
✎
12:51
|
(36) Да, спасибо.
|
|||
39
Масянька
15.11.17
✎
13:14
|
КолВоСтрок = Excel.Cells.CurrentRegion.Rows.Count;
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |