Выгрузка в Excel

Oksana

Lotus team
10.01.2006
329
0
#1
Выгружаю данные в Эксель, формирую документ, все работает, кроме того что ни как не могу задать двум группам ячеек нужные форматы, одной числовой, а другой дату.
Нашла в справке
Example
These examples set the number format for cell A17, row one, and column C (respectively) on Sheet1.

Worksheets("Sheet1").Range("A17").NumberFormat = "General"
Worksheets("Sheet1").Rows(1).NumberFormat = "hh:mm:ss"
Worksheets("Sheet1").Columns("C"). _
NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"

Для себя делаю так:
'WorkSheet.Range("G7").NumberFormat = "#,##0.00"
WorkSheet.Range("G8").NumberFormat = "mmm-yy"
Ругается, горит, что: Нельзя установить свойство NumberFormat класса Range

Подскажите, пожалуйста, как справится с этим форматированием.
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
Для: Oksana
Судя по всему у Вас не правильно заданы координаты Range("G7")...

Например либо так
sh.Range(sh.Cells(S, K), sh.Cells(S, p)).MergeCells = True

либо если все строка / столбец Cells / Columns
 

Oksana

Lotus team
10.01.2006
329
0
#3
Для: Oksana
Судя по всему у Вас не правильно заданы координаты Range("G7")...

Например либо так
sh.Range(sh.Cells(S, K), sh.Cells(S, p)).MergeCells = True

либо если все строка / столбец Cells / Columns
попробовала так
WorkSheet.Range(WorkSheet.Cells(i,7), WorkSheet.Cells(i,7)).NumberFormat = "#,##0.00"
та же ошибка
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
Для: Oksana
а так
... NumberFormat = {"#,##0.00"}

или так
... NumberFormat = {'#,##0.00'}
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#5
Задай так:
WorkSheet.Range(WorkSheet.Cells(i,7), WorkSheet.Cells(i,7)).NumberFormat = "# ##0,00"
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
Для: Oksana
А чего не получилось?
Попробуй так:
WorkSheet.Range("G8").NumberFormat = "МММ-ГГ"

Короче, всё дело в настройках локали.
Чтобы гарантировано работало везде смотри свойство Application.International.
 

Oksana

Lotus team
10.01.2006
329
0
#8
Для: Oksana
А чего не получилось?
Попробуй так:
WorkSheet.Range("G8").NumberFormat = "МММ-ГГ"

Короче, всё дело в настройках локали.
Чтобы гарантировано работало везде смотри свойство Application.International.
те из-за этих настроек на одной машине может выдать результат нормально, а на другой выдать ошибку, если локальные настройки не совпадут?

"МММ-ГГ" -так ошибку не выдало, но результат был выведен в виде 29.05.07, те так как он был взят из лотуса, но если в ячеку зайти и нажать enter, то применяется указанный формат и получаем май-07. Нужно для даты что-то обновить или преобразовать?
А вот числовой формат применился сразу.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Для: Oksana
Дату выгружаешь как дату или как строку? Надо как дату.

<!--QuoteBegin-Oksana+29:05:2007, 15:44 -->
<span class="vbquote">(Oksana @ 29:05:2007, 15:44 )</span><!--QuoteEBegin-->те из-за этих настроек на одной машине может выдать результат нормально, а на другой выдать ошибку, если локальные настройки не совпадут?
[snapback]67469" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ага. Так и будет.
 

Oksana

Lotus team
10.01.2006
329
0
#10
Для: Oksana
Дату выгружаешь как дату или как строку? Надо как дату.
Ага. Так и будет.
Отлично, все получилось
теперь надо будет подумать о том, чтобы считывать локальные настройки и от результата, применять форматирование
спасибо :)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#11
<!--QuoteBegin-Oksana+29:05:2007, 16:00 -->
<span class="vbquote">(Oksana @ 29:05:2007, 16:00 )</span><!--QuoteEBegin-->теперь надо будет подумать о том, чтобы считывать локальные настройки и от результата, применять форматирование
спасибо
[snapback]67473" rel="nofollow" target="_blank[/snapback]​
[/quote]
Смотри свойство International в хелпе VBA. Тебе надо всего лишь получить десятичный разделитель и обозначения месяца и года.
 

Oksana

Lotus team
10.01.2006
329
0
#12
Смотри свойство International в хелпе VBA. Тебе надо всего лишь получить десятичный разделитель и обозначения месяца и года.
Ну вот и готово
сделала так:
Код:
M=Application.International(20)
Y=Application.International(19)
S1=Application.International(4)
S2=Application.International(3)
WorkSheet.Range(WorkSheet.Cells(j,8), WorkSheet.Cells(i-1,8)).NumberFormat = M+M+M+"-"+Y+Y
WorkSheet.Range(WorkSheet.Cells(j,7), WorkSheet.Cells(i-1,7)).NumberFormat = "#"+S1+"##0"+S2+"00"
всем спасибо ;)