Выгрузка в Excel

  • Автор темы Автор темы Oksana
  • Дата начала Дата начала
O

Oksana

Выгружаю данные в Эксель, формирую документ, все работает, кроме того что ни как не могу задать двум группам ячеек нужные форматы, одной числовой, а другой дату.
Нашла в справке
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

Подскажите, пожалуйста, как справится с этим форматированием.
 
Для: Oksana
Судя по всему у Вас не правильно заданы координаты Range("G7")...

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

либо если все строка / столбец Cells / Columns
 
Для: 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"
та же ошибка
 
Для: Oksana
а так
... NumberFormat = {"#,##0.00"}

или так
... NumberFormat = {'#,##0.00'}
 
Задай так:
WorkSheet.Range(WorkSheet.Cells(i,7), WorkSheet.Cells(i,7)).NumberFormat = "# ##0,00"
 
Для: Oksana
А чего не получилось?
Попробуй так:
WorkSheet.Range("G8").NumberFormat = "МММ-ГГ"

Короче, всё дело в настройках локали.
Чтобы гарантировано работало везде смотри свойство Application.International.
 
Для: Oksana
А чего не получилось?
Попробуй так:
WorkSheet.Range("G8").NumberFormat = "МММ-ГГ"

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

"МММ-ГГ" -так ошибку не выдало, но результат был выведен в виде 29.05.07, те так как он был взят из лотуса, но если в ячеку зайти и нажать enter, то применяется указанный формат и получаем май-07. Нужно для даты что-то обновить или преобразовать?
А вот числовой формат применился сразу.
 
Для: 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
Дату выгружаешь как дату или как строку? Надо как дату.
Ага. Так и будет.
Отлично, все получилось
теперь надо будет подумать о том, чтобы считывать локальные настройки и от результата, применять форматирование
спасибо :)
 
<!--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. Тебе надо всего лишь получить десятичный разделитель и обозначения месяца и года.
 
Смотри свойство 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"
всем спасибо ;)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab