Имя: Пароль:
1C
 
v8: Ошибка в Excel: Нельзя установить свойство NumberFormat
0 zmb
 
24.07.07
18:26
Борюсь с такой вот фигней:

...
Книга = Новый ComОбъект("Excel.Application");
Книга.Application.Workbooks.Open(ИмяФайла);
Лист = Книга.Worksheets(1);
Лист.Range("A1:A10).NumberFormat = "[$$-409]#,##0.00"; //собсно тут и ругается
...

Сама ошибка - "Ошибка при установке значения атрибута контекста (NumberFormat): Произошла исключительная ситуация (Microsoft Office Excel): Нельзя установить свойство NumberFormat класса Range"

Через поиско я понял, что был далеко не одинок в данной проблеме, не раз находил для себя, вроде бы и новое решение, перебивая модуль, надеясь, что щас вот оно заработает, но проблема не решалась, в итоге вылез на такой вот обнадеживающий топик:

http://forum.foxclub.ru/read.php?28,253200,253200,quote=1
Платформа у меня 8.0.18.2
Знает кто вообще, решаема ли эта проблема, и как?
1 zmb
 
24.07.07
18:28
ёпрст, чёт ссылка не прошла
// http://forum.foxclub.ru/read.php?28,253200,253200,quote=1
2 NS
 
24.07.07
18:31
не верю!
Синтаксический контроль конструкция из (0) не пройдет.
Лист.Range("A1:A10).
Это как?
3 zmb
 
24.07.07
18:42
уважаемый, я это не из рабочего модуля копировал, а просто набросал для примера, чтобы лишь в общем показать о чем реч. За синтаксис сори, а где именно ошибка, я показал...
4 NS
 
24.07.07
18:57
Помню глюк с точкой. Вместо точки в 0.00 попробуй запятую.
5 zmb
 
24.07.07
19:01
Мда, формат таки записался, спасибо уже прогресс :)
6 NS
 
24.07.07
19:03
(5) Спасибо в карман не положишь :)
7 zmb
 
24.07.07
19:05
Странно, хотя через те же макросы выдал точку
8 у лю 427
 
24.07.07
19:06
(5) самое прикольное, что на другой машине у тебя может и не записаться...
И это зависит от региональных установок и экселя...


P.S. решение этой проблемы есть...
9 NS
 
24.07.07
19:06
(7) Фича известная. И давняя. Помницца Бекас никак не мог решение найти.
10 у лю 427
 
24.07.07
19:08
(9) так и не нашел? там же все примитивно делается....
11 asady
 
24.07.07
19:11
(0)
вот так работает:

  WorkBook=Application.WorkBooks.Open("Z:\test.xls");
   Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language = "javascript";
   List = WorkBook.Worksheets(1);
   Скрипт.AddObject("List",List);
   Скрипт.eval("List.Range(""A1:A10"").NumberFormat = ""[$$-409]#,##0.00"";");
   WorkBook.save();
   Application.Quit();
12 NS
 
24.07.07
19:18
(9) Про замену точки на запятую я ему сказал, а дальше разобрался он аль нет я не знаю.
ExcelApplication.International?
13 NS
 
24.07.07
19:21
Проблема похоже в том, что NumberFormat из 1C срабатывает как NumberFormatLocal
14 у лю 427
 
24.07.07
19:37
(13) возможно. У меня были такие подозрения, но решение нашел раньше...
P.S. причем не оязательно точка-запятая...

(11) пристроенный к телеге паровоз...
15 ШтушаКутуша
 
24.07.07
19:39
(0)
Книга = Новый ComОбъект("Excel.Application");
КакБыКнига=Книга.Application.Workbooks.Open(ИмяФайла);
16 smaharbA
 
24.07.07
19:50
Ексель.ReferenceStyle=1;
Лист.Range("A1:A10).NumberFormatLocal = "[$$-409]#,##0.00";
17 smaharbA
 
24.07.07
19:52
Вернее
Ексель.ReferenceStyle=1;
Лист.Range("A1:A10).NumberFormatLocal = "[$$-409]# ##0,00";
18 NS
 
24.07.07
19:52
(16) А это тут причем???
19 smaharbA
 
24.07.07
19:53
(18) см (17)
20 smaharbA
 
24.07.07
19:53
+(18) а референсе на всяк случай, если стиль ссылок не тот, то все - пипец
21 NS
 
24.07.07
19:53
(19) У него Range() и так срабатывает.
22 NS
 
24.07.07
19:55
NumberFormatLocal ничего не меняет.
23 smaharbA
 
24.07.07
19:56
(22) меняет, см (17)
24 NS
 
24.07.07
19:58
(23) Смотрю, длина строки выросла на 5 символов. Больше ничего не изменилось :)
Запятая ошибочная убрана в шаблоне, но сработает точно так-же как и NumberFormat
25 smaharbA
 
24.07.07
20:00
NS я тебя конечно уважаю, но счас проверю и напишу, все работает, это уж точно, тема была уже далеко не один разок
26 NS
 
24.07.07
20:00
см. (8) и (12,13)
27 NS
 
24.07.07
20:01
(25) Угу, и так-же всё работает с NumberFormat
28 smaharbA
 
24.07.07
20:12

//*******************************************

Процедура Сформировать()

   Ексель=СоздатьОбъект("Excel.Application");

   Ексель.ReferenceStyle=1;

   Книги=Ексель.Workbooks;

   Книга=Книги.Add();

   Листы=Книга.Worksheets;

   Лист=Листы.item(1);

   Ячейки=Лист.Cells;

   Диапазон=Ячейки.Range("A1:A10");

   Диапазон.NumberFormatLocal = "[$$-409]# ##0,00";

   Сообщить(Ячейки.Range("A1").NumberFormat);

   Сообщить(Ячейки.Range("A1").NumberFormatLocal);

   Ячейки.Range("A1").Value=10245.23;

   Ячейки.Range("A1").EntireColumn.AutoFit();

   Сообщить(Ячейки.Range("A1").Text);

   Ексель.Visible=-1;

КонецПроцедуры

29 NS
 
24.07.07
20:14
Ну и?
А если теперь попробовать
Диапазон.NumberFormat = "[$$-409]# ##0,00";
30 smaharbA
 
24.07.07
20:15
(27) работает, если формат "локаль" задан, как в (17)
31 smaharbA
 
24.07.07
20:15
(29) да
32 NS
 
24.07.07
20:16
Да, в смысле они работают одинаково? :)
33 smaharbA
 
24.07.07
20:16
(32) ага ))
34 NS
 
24.07.07
20:18
Блин, немного поцарапали машину, повезли ремонтировать по Каско.
Там всё сделали, и сказали (показали) что машина крашенная!!!
Не поверили - нам показали целый цех, где КРАСЯТ НОВЫЕ МАШИНЫ.
Говорят 30% новых машин царапанные/битые.
35 smaharbA
 
24.07.07
20:21
(34) жизнь прошла стороной ?
36 smaharbA
 
24.07.07
20:22
я тут приору увидал, десятка лучче...
37 NS
 
24.07.07
20:23
(35) Собирались её продавать - теперь уйдет чуть дешевле :(
по идее пустяки, но новость меня ошарашила. Там варят и красят новые иномарки ценой 30, 40, 50 Килобаксов. Люди думая что покупают новую машину в салоне, на самом деле покупают битую машину.
38 NS
 
24.07.07
20:25
(36) У нас 15-ая, с модным черным бампером. Оказалось что заводские бамперы только черные. В итоге оказалось что купили в салоне машину с битыми и перекрашенными бамперами, и перекрашена одна задняя дверь. Покупали три года назад - наверно сейчас салону уже претензий не предъявить...
39 NS
 
24.07.07
20:25
Опечатался - заводские только серые.
40 у лю 427
 
24.07.07
20:27
(34) а ты ВИДЕЛ УСЛОВИЯ ПЕРЕВОЗКИ?

Везли спецзаказом тачку в КОНТЕЙНЕРЕ - так эти уроды буржуи ее даже толком не закрепили, один борт протерся до дыр. Меняли дверь и крыло.

В автовозах - что угодно бывает...

P.S. в контейнере тачку не закрепили толком, но фиксаторы максимальных ускорений - ПОСТАВИЛИ!!! Полные уроды. Хорошо, что ни один не сработал. Так что выставили счет на 35 штук баксов за ремонт, шлифовку и покраску...
41 NS
 
24.07.07
20:29
(40) Нет, не видел, но теперь знаю :(
Покупать новую машину резко расхотелось :(
42 Torquader
 
25.07.07
14:54
Excel - загадочная вещь.
Региональные установки для Excel и для 1C могут быть разные.
Кроме того, всё зависит от версии Excel.
P.S. а зачем такой сложный формат нужен ?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший