Выгрузка в Excel

Тема в разделе "Lotus - Программирование", создана пользователем Oksana, 29 май 2007.

  1. Oksana

    Oksana Lotus team
    Lotus team

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Oksana
    Судя по всему у Вас не правильно заданы координаты Range("G7")...

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

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

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    попробовала так
    WorkSheet.Range(WorkSheet.Cells(i,7), WorkSheet.Cells(i,7)).NumberFormat = "#,##0.00"
    та же ошибка
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Oksana
    а так
    ... NumberFormat = {"#,##0.00"}

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Задай так:
    WorkSheet.Range(WorkSheet.Cells(i,7), WorkSheet.Cells(i,7)).NumberFormat = "# ##0,00"
     
  6. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    ПОЛУЧИЛОСЬ :)
    а вот с датой нет :)
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Oksana
    А чего не получилось?
    Попробуй так:
    WorkSheet.Range("G8").NumberFormat = "МММ-ГГ"

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

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    те из-за этих настроек на одной машине может выдать результат нормально, а на другой выдать ошибку, если локальные настройки не совпадут?

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: 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]
    Ага. Так и будет.
     
  10. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Отлично, все получилось
    теперь надо будет подумать о том, чтобы считывать локальные настройки и от результата, применять форматирование
    спасибо :)
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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. Тебе надо всего лишь получить десятичный разделитель и обозначения месяца и года.
     
  12. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Ну вот и готово
    сделала так:
    Код (Text):
    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"
    всем спасибо ;)
     
Загрузка...

Поделиться этой страницей