19 октября, пятница 18:02
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

О формате даты в Экселе

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • О формате даты в Экселе

    Никто случайно не сталкивался с ситуацией когда из Rsl
    создается файл экселя... и в нем в какую-то колонку выводится дата. Требуется установить ее формат.
    например
    Код:
    ObXLS.Selection.NumberFormat = "dd.mm.yyyy";
    Но у некоторых пользователей в экселе он другой "ДД.ММ.ГГГГ"
    или "dd.MM.yyyy" и возникает ошибка
    При этом он может не совпадать с форматом который в региональных настройках компьютера:
    dateformat = getLocaleInfo (0,LOCALE_SSHORTDATE);

    Как это можно побороть?

  • #2
    Genmichael А версии Office одинаковые? У меня была похожая проблема, которая заключалась именно в отличии версий Office.
    С уважением, Антон

    Комментарий


    • #3
      Конечно разные...

      Комментарий


      • #4
        Genmichael Сделайте одинаковые - и проблема исчезнет. Я детали не помню, но та версия, которая старее, что-то там не поддерживает.
        Кстати, я сейчас перевожу контору на OpenOffice.
        С уважением, Антон

        Комментарий


        • #5
          Если это просто ведомость для посмотреть и красиво распечатать - можно передать дату как строку текста. Будет единообразно при любых настройках у пользователя.

          Комментарий


          • #6
            Genmichael возможно, пригодится небольшая функция, возвращающая формат даты на телеге пользователя.

            Код:
            Public Function date_format() As String
                Dim res as String, y As String, m As String, d As String, s As String
                
                If Application.International(xl4DigitYears) Then
                    y = String(4, Application.International(xlYearCode))
                Else
                    y = String(2, Application.International(xlYearCode))
                End If
                
                If Application.International(xlMonthLeadingZero) Then
                    m = String(2, Application.International(xlMonthCode))
                Else
                    m = String(1, Application.International(xlMonthCode))
                End If
                
                If Application.International(xlDayLeadingZero) Then
                    d = String(2, Application.International(xlDayCode))
                Else
                    d = String(1, Application.International(xlDayCode))
                End If
                
                s = Application.International(xlDateSeparator)
                
                If Application.International(xlDateOrder) = 0 Then res = m + s + d + s + y
                If Application.International(xlDateOrder) = 1 Then res = d + s + m + s + y
                If Application.International(xlDateOrder) = 2 Then res = y + s + m + s + d
                
                date_format = res
                
            End Function
            Семь раз отпей - один отъешь.

            Комментарий

            Пользователи, просматривающие эту тему

            Свернуть

            Присутствует 1. Участников: 0, гостей: 1.

            Обработка...
            X