![]() |
![]() |
![]() |
|
Как установить формат столбца в xls файле из 1С ? | ☑ | ||
---|---|---|---|---|
0
blake
22.12.04
✎
14:05
|
Собственно сабж.
Необходимо например в первом столбце установить формат даты. И надо ли при этом знать количество строк? И как найти последнюю строку |
|||
1
laeg
22.12.04
✎
14:12
|
||||
2
blake
22.12.04
✎
14:25
|
Открыть то как я знал давно. мне нужно установить формат всего столбца как дата.
|
|||
3
laeg
22.12.04
✎
14:32
|
VBA
Columns("A:A").Select Selection.NumberFormat = "m/d/yyyy" На 1с перевести ? :))) |
|||
4
blake
22.12.04
✎
15:41
|
laeg переведи это на 1С. У меня плохо получается...
У меня пишит что не может установить свойство НамберФормат класса Ранге |
|||
5
Кортес
22.12.04
✎
15:44
|
(4) Покажи свой код
|
|||
6
NastyFrog
22.12.04
✎
15:45
|
(4)сотвори в екселе макрос - посмотри, как он там пишет, может быть разница в региональных настройках
|
|||
7
Бивень
22.12.04
✎
15:49
|
(6) Настя, чего ты упрямая такая?
Мы ж с тобой уже беседовали по этому поводу ..., неужели из той беседы не понятно, что задачка эта в лоб не решается? |
|||
8
blake
22.12.04
✎
15:55
|
Ну так как решить то эту задачку.
Я делал даже макрос. на запись: выделял весь столбец А:А делал замену точки(.) на дробь(/) потом устанавливал фомат дата. При применении макроса в Экселе у меня замена почему то происходила по всем столбцам. хрень какая то... |
|||
9
blake
22.12.04
✎
15:56
|
думаю просто перебор значений делать по столбцу с первой строки по последнюю.
Но только не знаю как найти последнюю строку... |
|||
10
Оборотень
22.12.04
✎
16:05
|
Это Ты в Замене что-то перемудрил наверное ...
какой МСофис у Тебя? а последнюю стоку можно глупым перебором найти cells(1,n).value="" |
|||
11
blake
22.12.04
✎
16:10
|
у меня самый простой ОффисХП.
Напишите кто нить простую процедурку для установки ячейке формата даты которая бы работала в 1С. У меня так Эксел = СоздатьОбъект("Excel.Application"); Файл = Эксел.Workbooks.Open(файл); Лист = Файл.WorkSheets(1); Лист.Range("A1:A10").NumberFormat = "dd/mm/yy"; Эксел.WorkBooks.close(); Эксел.Quit(); |
|||
12
blake
22.12.04
✎
16:12
|
Но тама говорит не может установить свойство НамберФормат класса Ранге
переписал ... Эксел = СоздатьОбъект("Excel.Application"); Файл = Эксел.Workbooks.Open(файл); Лист = Файл.WorkSheets(1); Лист.Range("A1:A10").Select; Лист.Selection.NumberFormat = "dd/mm/yy"; Эксел.WorkBooks.close(); Эксел.Quit(); тут ругается на Переменная не определена (Selection) |
|||
13
laeg
22.12.04
✎
16:15
|
(9)
Как определить, когда закончились данные на листе при загрузке данных из Excel SpecialCells(11) - "последняя" ячейка Например, если нужен номер строки последней ячейки, то LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row; <сообщил AlexNik> На счет "Нельзя установить свойство NumberFormat класса Range" попробую ... Бивень факт знает ... |
|||
14
blake
22.12.04
✎
16:16
|
ту ссылочку я тоже нашел (9).
Но это тоже бы перевести в 1С и что бы работало... Как же так никто с Экселем не дружит ??? |
|||
15
laeg
22.12.04
✎
16:21
|
(14)
Когда дату по ОЛЕ в Ексель пишешь, то ячейка формат ячейки становиться типа Дата ... |
|||
16
blake
22.12.04
✎
16:25
|
Из Эски я формирую простой реестр документов обычным отчетом, где в первом столбце дата(Дат = Формат(Расход.ДатаДок,"Д ДДММГГГГ");), и записываю в xls.
Потом хочу открыть его и установить экселевский формат даты. |
|||
17
Оборотень
22.12.04
✎
16:28
|
(11) неправильно к объекту обращаещься, вот и не катит.
Напиши Лист.Range("A1:A10").NumberFormat = "dd/mm/yy"; |
|||
18
Бивень
22.12.04
✎
16:29
|
(16) Дату - влево ...
|
|||
19
Бивень
22.12.04
✎
16:30
|
(17) Это не поможет ...
|
|||
20
blake
22.12.04
✎
16:33
|
(17)
Так и писал раньше, смотри (11) (18) Дату влево и то же самое "Нельзя установить свойство NumberFormat класса Range" |
|||
21
Бивень
22.12.04
✎
16:35
|
(20) Если дата влево прибита, намберФормат можно убрать на фих ...
|
|||
22
Можно и
22.12.04
✎
16:37
|
Установить. Справку читай
|
|||
23
Оборотень
22.12.04
✎
16:38
|
(20) Сорри!!! не вчитался. сейчас сделаю модуль - выложу :)
|
|||
24
laeg
22.12.04
✎
16:38
|
(21)
хех не интересовался такими тонкостями раньше, щас смотрю ... дату по оле в ексель, прибита в право ... формат ячейки становится дата ... |
|||
25
Барбариска
22.12.04
✎
16:40
|
(21)если убрать намберФормат в то место, куда ты говоришь, то дата там не получится. Может быть в качестве универсального решения попробовать через OLE записывать макрос, правильно форматирующий яячейки с датами, в Excel и Excel-ем его выполнять?
|
|||
26
Бивень
22.12.04
✎
16:48
|
(24) Я не про ОЛЕ говорил ... Ему она и не нужна ..., см. (16)
|
|||
27
laeg
22.12.04
✎
17:11
|
(26)
Воть пля проморгал ... точно-точно :)) Даже могу подсказать более, на хиппо была обработка MXL to XLS, работает корректно, переносит что даты, что числа с разделителями корректно. |
|||
28
blake
22.12.04
✎
17:14
|
И где же решение сей проблемы...
Я уже опписался и опчитался всяких форумов, секретов и советов... Тока результата ни какого |
|||
29
Бивень
22.12.04
✎
17:15
|
(25) Блин! Второй раз я на том же дерьме подскользнулся ... :))
И ведь пару недель назад то всего, ты меня мордой в это тыкала ... Стыдобищща! :(( |
|||
30
Барбариска
22.12.04
✎
17:19
|
(29) а вообще-то я поняла так, чта автор сначала записывает Xls штатными средствами, а потом через OLE поправляет. Кстати, есть забавный глюк, связанный с этим - в некоторых случаях 1С сама закрывает некоторые свои рабочие DBF...
|
|||
31
blake
22.12.04
✎
17:23
|
Поняла правильно.
Мне приходится после записи xls открывать его снова и вручную проделывать это - в стлобце замена точки(.) на дробь(/) и делать формат даты. Тогда все получается. Но хотелось бы это автоматизировать - надоело все руками да руками... |
|||
32
blake
22.12.04
✎
17:25
|
Ну где же оборотень ......
|
|||
33
Барбариска
22.12.04
✎
17:33
|
(32) я конечно не оборотень, но посмотри это - может быть поможет))
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=2188 |
|||
34
blake
22.12.04
✎
17:52
|
Спасибо Барбариска, мож разберусь
|
|||
35
ЭтоИмяЮзера Занято
22.12.04
✎
17:57
|
ну дятлы. Английский знать надо - в справке все описано
|
|||
36
Оборотень
22.12.04
✎
18:23
|
(33) Он и сам так сможет
Я тут научился диапазон выделять до первой пустой ячейки, но заткнулся на замене. Никак не катит... Вот мои потуги ... остальное только завтра :) Проверено - точно работает с первым столбцом Перем ИмяФ, ПутьФ; ФС.ВыбратьФайл(0,ИмяФ,ПутьФ,"Выберите файл",,"*.xls"); ФайлЕксел=СоздатьОбъект("Excel.Application"); НКнига=ФайлЕксел.Workbooks.Open(ПутьФ+ИмяФ); //НЯч=НКнига.Range("A1").End(-4121).Select(); //"xlDown"=-4121 Лист=НКнига.Sheets("Лист1"); //Выделить от первой ячейки до последнего значения (до пустой ячейки) Область=Лист.Range(Лист.Cells(1,1), Лист.Cells(1,1).End(-4121));//.Select() //"xlDown"=-4121 //Установить формат в дату Область.NumberFormat = "dd/mm/yy;@"; |
|||
37
Дурочка 1С
23.12.04
✎
01:30
|
Columns("A:A").Select
Selection.NumberFormat = "m/d/yyyy" На 1с перевести ? :))) Excel.Columns("A:A").Select();//Выделить область Excel.Selection.NumberFormat = "m/d/yyyy";//Формат ячейки:0.00-числовой,General-общий,@-текст,dd mm yy - формат даты |
|||
38
427
23.12.04
✎
07:30
|
а с NumberFormat есть недокументированный прикол в Экселе... Его надо понять.. И все полетит...
|
|||
39
Оборотень
23.12.04
✎
08:56
|
(36)
прокрался глюк вместо Область.NumberFormat = "dd/mm/yy;@"; нужно писать Область.NumberFormat = "ДД.ММ.ГГ;@"; Ты это хотел сказать в (38), а 427? |
|||
40
427
23.12.04
✎
09:43
|
нет.
|
|||
41
Оборотень
23.12.04
✎
09:56
|
Вот этот кусок работает ... ну блин мыкрософт ... окуклится можно!!!
ФС.ВыбратьФайл(0,ИмяФ,ПутьФ,"Выберите файл","Excell(*.xls)|*.xls","*.xls"); ФайлЕксел=СоздатьОбъект("Excel.Application"); НКнига=ФайлЕксел.Workbooks.Open(ПутьФ+ИмяФ); //НЯч=НКнига.Range("A1").End(-4121).Select(); //"xlDown"=-4121 Лист=НКнига.Sheets("Лист1"); //Выделить от первой ячейки до последнего значения (до пустой ячейки) Область=Лист.Range(Лист.Cells(1,1), Лист.Cells(1,1).End(-4121)); //"xlDown"=-4121 //Заменить "." на "/" Область.Replace(".", "/", 2, 1, 0, 0); //Установить формат в дату Область.NumberFormat = "ДД/ММ/ГГ;@" |
|||
42
Оборотень
23.12.04
✎
10:07
|
немного причесал кусок кода - понятнее выглядит
//Определим лист Лист=НКнига.Sheets("Лист1"); //Определим ячейку от которой будем искать НЯч=Лист.Range("A1"); //Выделить от определенной ячейки до последнего значения (до пустой ячейки) вниз //.End(xlDown) //"xlDown"=-4121 - вниз; "xlToLeft"=-4159 - влево; "xlToRight"=-4161 - вправо; "xlUp"=-4162 - вверх Область=Лист.Range(НЯч, НЯч.End(-4121)); //Заменить "." на "/" Область.Replace(".", "/", 2, 1, 0, 0); //Установить формат в дату Область.NumberFormat = "ДД/ММ/ГГГГ;@"; |
|||
43
blake
24.12.04
✎
11:32
|
Оборотень а как на счет поиска последней строки.
LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row; будет эта штука работать ? |
|||
44
blake
24.12.04
✎
11:39
|
4121 это ког экселя - вниз до пустой ячейки ?
|
|||
45
blake
24.12.04
✎
11:39
|
4121 это код экселя - вниз до пустой ячейки ?
|
|||
46
blake
24.12.04
✎
11:53
|
Статью срочно в номер. Спасибо Оборотню.
Клевый чувак! |
|||
47
Оборотень
24.12.04
✎
14:02
|
(44) точнее "-4121" это константа от экселя такая "xlDown" называется.
В 1С эти константы строчками не пишутся, приходится их значения искать :( |
|||
48
Оборотень
24.12.04
✎
14:29
|
(43) Эта штука тоже будет работать :)
Вот для нее константы: xlCellTypeAllFormatConditions -4172 xlCellTypeAllValidation -4174 xlCellTypeBlanks 4 xlCellTypeComments -4144 xlCellTypeConstants 2 xlCellTypeFormulas -4123 xlCellTypeLastCell 11 xlCellTypeSameFormatConditions -4173 xlCellTypeSameValidation -4175 xlCellTypeVisible 12 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |