Имя: Пароль:
1C
1C 7.7
v7: Установка формата ячеек Excell
,
0 GhostTM
 
27.02.12
15:03
Создается экселевский файл.
В колонке "H" должны быть числа с двумя знаками после запятой.


 xl=СоздатьОбъект("Excel.Application");
 xl.Workbooks.Add(); //Добавляем новый документ
 
 xl.Range("H:H").NumberFormat = "0.00";

Но на последнюю строку выдается сообщение об ошибке:
xl.Range("H:H").NumberFormat = "0.00";
{[skiped]}: Microsoft Office Excel: Нельзя установить свойство NumberFormat класса Range

Если написать макрос Range("H:H").NumberFormat = "0.00" и выполнить, то все отрабатывает.


Как установить формат ячеек?
1 ЧеловекДуши
 
27.02.12
15:08
Запускаешь Ексель -> Записать макрос... Начинаешь устанавливать формат в яЧейке... -> как только справишься,то останавливаешь запись макроса -> открываешь макрос на редактирование + Наслаждаешься авто-кодом от мягких :)
2 ЧеловекДуши
 
27.02.12
15:09
+В рандже может и нельзя, а вот в Каллсе мона :)
3 ЧеловекДуши
 
27.02.12
15:11
+ Range, у тебя не хватает координат, у тебя только "Строка", а надо еще и "колонку" :)
4 ЧеловекДуши
 
27.02.12
15:15
+ У меня вот так работало...

//_____________________________________________________________________________
Функция ПОбл(НомС,НомК,префикс="")
   Перем СтрокаАлфовит,числ,Ост;
   Перем Рез;
   
   Если (ПустоеЗначение(префикс)=1) или (префикс="$") Тогда
       Рез="A"+СокрЛП(НомС);
       СтрокаАлфовит="BCDEFGHIJKLMNOPQRSTUVWXYZ";//26 = 25
       
       числ=Число(НомК)-1; // минус один символ :)
       рез="";    
       пока Числ>0 Цикл
           Ост=числ-Цел(Числ/26)*26;
           рез=?(ост=0,"A",сред(СтрокаАлфовит,ост,1))+рез;
           числ=(числ-ост)/26
       КонецЦикла;
       
       Если ПустоеЗначение(СокрЛП(Рез))=1 Тогда
           рез="A";
       КонецЕсли;
       
       Рез=префикс+Рез+префикс+СокрЛП(НомС);
       
   Иначе
       Если "RC"=префикс Тогда
           //"RC"
           Рез="R"+СокрЛП(НомС)+"C"+СокрЛП(НомК);
       Иначе
           //"[]"
           Рез="R["+СокрЛП(НомС)+"]C["+СокрЛП(НомК)+"]";
       КонецЕсли;
   КонецЕсли;
   
   Возврат Рез;
КонецФункции //ПОбл(1,1)


Лист.range(ПОбл(НачалоТаблицыПоПиУ+2,5)+":"+ПОбл(НачалоТаблицыПоПиУ+23,7)).NumberFormat = "_-* # ##0\ _р_._-;-* # ##0\ _р_._-;_-* ""-""??\ _р_._-;_-@_-";
5 GhostTM
 
27.02.12
15:24
(1) В том-то и дело, что не работает код мягких.

(2) Каллс - это Cells &
(3) У меня колонка (код мягких)
6 155153144627
 
27.02.12
15:25
(0)
 xl=СоздатьОбъект("Excel.Application");
 Лист = xl.Workbooks.Add(); //Добавляем новый документ
 Лист.Range("H:H").NumberFormat = "0.00";

Вот так надо.
7 GhostTM
 
27.02.12
15:32
(6)

Ща попробуем
8 GhostTM
 
27.02.12
15:36
(6)

Поле агрегатного объекта не обнаружено (Range)
9 155153144627
 
27.02.12
16:03
Лист.Columns("H:H").NumberFormat = "0.00"
10 GhostTM
 
27.02.12
16:22
(9) Поле агрегатного объекта не обнаружено (Columns)
11 155153144627
 
27.02.12
16:45
...

Ну тогда вот так делай

Лист.Cells(Сч, 8).value = Формат(Число1, "Ч6.2");

:-)
12 ЧеловекДуши
 
27.02.12
16:50
+ (0) Если б вы в (4) посмотрели, то
Вот начало...

Ексель=СоздатьОбъект("Excel.Application");
Книга=Ексель.workbooks.add();
Лист=Книга.worksheets(НомерЛистаЕкселя);
13 ЧеловекДуши
 
27.02.12
16:51
+ (5) да побоку... вы не там пытаетесь формат установить ;)
+ (0) Не стоит все лепить в одну переменную ;)

//Гуано код...
 xl=СоздатьОбъект("Excel.Application");
 xl.Workbooks.Add(); //Добавляем новый докуме
14 GhostTM
 
27.02.12
17:11
Вот полный код:

   xls = СоздатьОбъект("Excel.Application");
   Book = xls.Workbooks.Add(); //Добавляем новый документ
   xl = Book.Worksheets(1);
   
   xls.ScreenUpdating = 0;
   xls.EnableEvents = 0;
   xls.Visible = 0;    
   
   row = 1; //первая строка  

   row = row + 1;
   
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
       
       Если КВыдаче = 0 Тогда Продолжить;
       КонецЕсли;
       
       __Сотр = Сотр.Сотрудник;
       
       xl.Cells(row,  1).Value = "'987";
       xl.Cells(row,  2).Value = "'789";
       
       xl.Cells(row,  3).Value = "";
       
       xl.Cells(row,  4).Value = "'1313962";
       
       xl.Cells(row,  5).Value = __Сотр.Наименование;
       xl.Cells(row,  6).Value = __Сотр.Имя;
       xl.Cells(row,  7).Value = __Сотр.Отчество;
       xl.Cells(row,  8).Value = КВыдаче;  //*

       xl.Cells(row,  9).Value = "'" + Строка(__Сотр.ИНН);
       
       xl.Cells(row, 10).Value = "";
       
       xl.Cells(row, 11).Value ="NORM";
       xl.Cells(row, 12).Value ="CARD";
       
       row = row + 1;//переходим на следующую строку
   КонецЦикла;                

   Пока Book.Sheets.Count > 1 Цикл
       Book.Sheets(Book.Sheets.Count).Delete();
   КонецЦикла;
   
       //---- Вот тут не работает ------
   RR = xl.Range("H:H");
   RR.NumberFormat = "0.00";
       //---- Вот тут не работает ------

   xl.Columns("A:L").EntireColumn.AutoFit();
   
   xls.ScreenUpdating = 1;
   xls.EnableEvents = 1;
   xls.Visible = 1;    
   


xls - Ексель
Book - Книга
xl - Лист
15 GhostTM
 
27.02.12
17:14
Это выдает запись макроса:



Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 27.02.2012 (User)
'

'
   Columns("H:H").Select
   Selection.NumberFormat = "0.00"
End Sub




И макрос работает, а из 1С не работает
16 GhostTM
 
27.02.12
17:15
Ошибка:

RR.NumberFormat = "0.00";
{Документ.РасчетноПлатежнаяВедомость.Форма.Модуль(944)}: Microsoft Office Excel: Нельзя установить свойство NumberFormat класса Range
17 GhostTM
 
27.02.12
18:13
(11) Чувствую, что так и придется делать, но очень не хочется.... :(
18 FN
 
27.02.12
19:55
Попробуй так:
ф=Ексель.Columns("A:A").Select;
Ексель.Selection.NumberFormat = "0,00";
19 FN
 
27.02.12
20:00
(18) + на всякий случай команда для установки разделителя:
Ексель.DecimalSeparator = ",";
20 ЧеловекДуши
 
28.02.12
08:08
(17)Не знаю, что ты там чувствуешь (ДНК?), но в (4) тебя спасет, тебе какая баня, формат по тупо колонке или уже с указанными всеми координатами?

...Автор упрям до "...отизма"... :)
21 ЧеловекДуши
 
28.02.12
08:09
+(17)Ну не пашет эта херь по колонке, что ты так уперся "рогами", делай как обычно все делают... :)
22 Рэйв
 
28.02.12
08:13
Лист.Cells(Строка,Колонка).NumberFormat="0,00";
23 не человек
 
28.02.12
08:18
(17) вот так попробуй: ЛистЭксель.Range(ЛистЭксель.Cells(1, 1), ЛистЭксель.Cells(КоличествоСтрок, 1)).NumberFormat = "0,00"
24 ЧеловекДуши
 
28.02.12
08:18
(22)Я ему лучше дал в (4), а он хочет бездумно и сразу :)
25 ЧеловекДуши
 
28.02.12
08:18
(23)Ты пробовал?
26 не человек
 
28.02.12
08:19
(25) да. у меня так работает
27 ЧеловекДуши
 
28.02.12
08:36
(26)Интересный подход :)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший