Выгрузка в Excel Плохой тип переменной
04.03.2009
13:25
#1
"Процедура VExcel()
Exc=СоздатьОбъект("Excel.Application");
ИмяФайла=("C:\temp.xls");
НовыеРабочиеКниги=Exc.Workbooks;
РабочаяКнига=НовыеРабочиеКниги.Open(ИмяФайла);
КолРек=МФКатЦены.РазмерСписка();
Для Ном=1 по КолРек Цикл
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
КонецЦикла
КонецПроцедуры
В результате сообщение
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
{Обработка.ПечатьПрайсЛиста.Форма.Модуль(44)}: Плохой тип переменной
Вопрос: что не так?"
Exc=СоздатьОбъект("Excel.Application");
ИмяФайла=("C:\temp.xls");
НовыеРабочиеКниги=Exc.Workbooks;
РабочаяКнига=НовыеРабочиеКниги.Open(ИмяФайла);
КолРек=МФКатЦены.РазмерСписка();
Для Ном=1 по КолРек Цикл
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
КонецЦикла
КонецПроцедуры
В результате сообщение
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
{Обработка.ПечатьПрайсЛиста.Форма.Модуль(44)}: Плохой тип переменной
Вопрос: что не так?"
04.03.2009
13:49
#2
"> Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
Попробуйте например сделать так:
Exc.Cells(1, Ном).Value=1;
Вылезет ошибка? Нет - Хорошо
Но вообще-то Cells - это метод листа Excelевской книги, а если смотреть на вашу процедуру, то вы пытаетесь в приложении Excel найти ячейку
В 1С 8 можно найти такой пример:
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
ExcelЛист.Cells(Row,Column).Value = 1;
"
Попробуйте например сделать так:
Exc.Cells(1, Ном).Value=1;
Вылезет ошибка? Нет - Хорошо
Но вообще-то Cells - это метод листа Excelевской книги, а если смотреть на вашу процедуру, то вы пытаетесь в приложении Excel найти ячейку
В 1С 8 можно найти такой пример:
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
ExcelЛист.Cells(Row,Column).Value = 1;
"
04.03.2009
14:29
#3
"Не, ячейку мне находить не нужно
мне нужно выгрузить значения элементов списка в excel
если например делаю так:
Exc.Cells(1, Ном).Value=Ном;
Учитывая если размер списка равен - 4
то в excel вылазит в ячейку А1-"1", А2-"2" и тд до четырех
А вот вернуть значение списка согласно номеру как я это делаю ( МФКатЦены.ПолучитьЗначение(Ном))
не получается
"
мне нужно выгрузить значения элементов списка в excel
если например делаю так:
Exc.Cells(1, Ном).Value=Ном;
Учитывая если размер списка равен - 4
то в excel вылазит в ячейку А1-"1", А2-"2" и тд до четырех
А вот вернуть значение списка согласно номеру как я это делаю ( МФКатЦены.ПолучитьЗначение(Ном))
не получается
"
05.03.2009
14:25
#4
"Тогда другой вопрос, а в качестве элементов списка у вас какой тип используется?
ПолучитьЗначение(>,)
Синтаксис:
ПолучитьЗначение(<Позиция>,<Строка>)
Назначение:
Получить значение из указанной позиции списка.
Возвращает значение из списка.
Параметры:
<Позиция> - номер позиции в списке, из которой возвращается значение (изменяется от 1 до РазмерСписка);
<Строка> - идентификатор переменной, в которой возвращается символьное представление получаемого значения.
В Excel вы скорее всего можете передать строку или число, а у вас какой тип возвращается МФКатЦены.ПолучитьЗначение(Ном)(что в списке МФКатЦены)?"
ПолучитьЗначение(>,)
Синтаксис:
ПолучитьЗначение(<Позиция>,<Строка>)
Назначение:
Получить значение из указанной позиции списка.
Возвращает значение из списка.
Параметры:
<Позиция> - номер позиции в списке, из которой возвращается значение (изменяется от 1 до РазмерСписка);
<Строка> - идентификатор переменной, в которой возвращается символьное представление получаемого значения.
В Excel вы скорее всего можете передать строку или число, а у вас какой тип возвращается МФКатЦены.ПолучитьЗначение(Ном)(что в списке МФКатЦены)?"
05.03.2009
15:57
#5
"Дык Cells - не принадлежит классу Application, а принадлежит классу WorkSheet или Range
Надо примерно так:
Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"
а еще лучше вообще сформировать ссылку на конкретный лист рабочей книги а потом именно в него слать значения, а то если алгоритм будет работать долго и пользователь параллельно сменит ActiveSheet, произойдет выдача значений уже в другой активный лист, короче, (пишу без теста и проверок), я бы делал так:
Exc=СоздатьОбъект("Excel.Application");
РабочаяКнига=Exc.Workbooks.Open(ИмяФайла);
ЛистКниги=РабочаяКнига.Sheets("Лист 1");
ЛистКниги.Cells(1, 1).Value="чего нибудь";"
Надо примерно так:
Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"
а еще лучше вообще сформировать ссылку на конкретный лист рабочей книги а потом именно в него слать значения, а то если алгоритм будет работать долго и пользователь параллельно сменит ActiveSheet, произойдет выдача значений уже в другой активный лист, короче, (пишу без теста и проверок), я бы делал так:
Exc=СоздатьОбъект("Excel.Application");
РабочаяКнига=Exc.Workbooks.Open(ИмяФайла);
ЛистКниги=РабочаяКнига.Sheets("Лист 1");
ЛистКниги.Cells(1, 1).Value="чего нибудь";"
05.03.2009
17:44
#6
вобщем начинаю рассказывать с самого начала
нужно справочник прайс лист выгрузить в ексель
для начала сделать шапку
у товара есть 4 категории цены
Закупочная, оптовая, мелкооптовая, розничная
эти категории можно выбирать из списка (МФКатЦен)
и выбраные категории нужно перенести в ексель
если например выбрать цены оптовая и розничная
должно получиться следующее
______A___________B_____________C_______________D________
>1| Наименование | Артикул | Цена оптовая | Цена Розничная |
нужно справочник прайс лист выгрузить в ексель
для начала сделать шапку
у товара есть 4 категории цены
Закупочная, оптовая, мелкооптовая, розничная
эти категории можно выбирать из списка (МФКатЦен)
и выбраные категории нужно перенести в ексель
если например выбрать цены оптовая и розничная
должно получиться следующее
______A___________B_____________C_______________D________
>1| Наименование | Артикул | Цена оптовая | Цена Розничная |
05.03.2009
17:50
#7
RE: Дык Cells - не принадлежит классу Application, а принадлежит классу WorkSheet или Range
Надо примерно так:
Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"
вот если туда написать "его нибудь" то это "чего нибудь" вылазит, причем вылазит правильно
если в списке выбрано два значения то и в ексель вылазит в А1-чего нибудь, B1-чего нибудь
а мне нужно чтобы вылазило значение списка МФКатЦены согласно его номеру в списке
Надо примерно так:
Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"
вот если туда написать "его нибудь" то это "чего нибудь" вылазит, причем вылазит правильно
если в списке выбрано два значения то и в ексель вылазит в А1-чего нибудь, B1-чего нибудь
а мне нужно чтобы вылазило значение списка МФКатЦены согласно его номеру в списке
05.03.2009
21:10
#8
"Если задача этим ограничивается, сделайте проще. Сформируйте печатную форму обычным сопособом, то есть прямо в 1С, а потом дайте команду:
Таб.Записать(ИмяФайла, 1);
Записать(>,);
Синтаксис:
Записать(<ИмяФайла>,<ТипФайла>)
Назначение:
Записать таблицу в файл.
Параметры:
<ИмяФайла> - имя файла.
<ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла:
· отсутствует, 0 или ''MXL'' - формат 1C;
· 1 или ''XLS'' - формат Ms Excel;
· 2 или ''HTM'' или ''HTML'' - формат HTML;
· 3 или ''TXT'' - формат TXT.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.
P.S. Если хочется все таки в Excel через OLE, напишите, завтра отвечу"
Таб.Записать(ИмяФайла, 1);
Записать(>,);
Синтаксис:
Записать(<ИмяФайла>,<ТипФайла>)
Назначение:
Записать таблицу в файл.
Параметры:
<ИмяФайла> - имя файла.
<ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла:
· отсутствует, 0 или ''MXL'' - формат 1C;
· 1 или ''XLS'' - формат Ms Excel;
· 2 или ''HTM'' или ''HTML'' - формат HTML;
· 3 или ''TXT'' - формат TXT.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.
P.S. Если хочется все таки в Excel через OLE, напишите, завтра отвечу"
06.03.2009
09:40
#9
Я пока так и сохраняю, только через Файл-сохранить как..
но в справочнике прайс лист около 10000 наименований и поэтому сохраняется он очень долго
но в справочнике прайс лист около 10000 наименований и поэтому сохраняется он очень долго
06.03.2009
10:53
#10
"Посмотрите через отладчик какой тип возвращает
МФКатЦены.ПолучитьЗначение(Ном)
или можно еще так написать
Сообщить(ТипЗначенияСтр(МФКатЦены.ПолучитьЗначение(Ном)));
Тип должен быть либо строка, либо число
Если что-то другое, то нужно преобразовывать, тем болееесли это тип "Справочник" или "Документ""
МФКатЦены.ПолучитьЗначение(Ном)
или можно еще так написать
Сообщить(ТипЗначенияСтр(МФКатЦены.ПолучитьЗначение(Ном)));
Тип должен быть либо строка, либо число
Если что-то другое, то нужно преобразовывать, тем болееесли это тип "Справочник" или "Документ""
Читают тему
(гостей: 1)