Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/формат даты в коде на украинском языке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » формат даты в коде на украинском языке (Макросы/Sub)
формат даты в коде на украинском языке
grh1 Дата: Четверг, 22.07.2021, 10:52 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Доброго дня, уважаемые знатоки!
Суть: в файле эксель прописан макрос перевода данных из excel в word... все работает как нужно, за маленьким исключение - ДАТА

В ячейке excel выставлен формат даты такой: [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@ и отображается дата так: 09 червня 2021 року.

1. Когда в коде прописываю этот формат [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@, то получаю в вёрде такую абракадабру

2. Когда же в коде прописываю вот этот формат [$-uk-UA-x-genlower]dd mmmm yyyy року;@, (т.е. вписываю англ. буквы) то получаю в вёрде вот такое

3. Вопрос ЗДЕСЬ

Подскажите пожалуйста, что делаю не так и какой формат всё-таки вставлять в код, чтобы получить желаемое?!

Спасибо


Vadym Gorokh
 
Ответить
СообщениеДоброго дня, уважаемые знатоки!
Суть: в файле эксель прописан макрос перевода данных из excel в word... все работает как нужно, за маленьким исключение - ДАТА

В ячейке excel выставлен формат даты такой: [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@ и отображается дата так: 09 червня 2021 року.

1. Когда в коде прописываю этот формат [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@, то получаю в вёрде такую абракадабру

2. Когда же в коде прописываю вот этот формат [$-uk-UA-x-genlower]dd mmmm yyyy року;@, (т.е. вписываю англ. буквы) то получаю в вёрде вот такое

3. Вопрос ЗДЕСЬ

Подскажите пожалуйста, что делаю не так и какой формат всё-таки вставлять в код, чтобы получить желаемое?!

Спасибо

Автор - grh1
Дата добавления - 22.07.2021 в 10:52
Pelena Дата: Четверг, 22.07.2021, 11:05 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19163
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Используйте в макросе функцию Format, тогда в Ворд будет передаваться текстовое значение даты

или можно использовать свойство Text и передавать в Ворд Activecell.Text, а не Activecell.Value


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Используйте в макросе функцию Format, тогда в Ворд будет передаваться текстовое значение даты

или можно использовать свойство Text и передавать в Ворд Activecell.Text, а не Activecell.Value

Автор - Pelena
Дата добавления - 22.07.2021 в 11:05
grh1 Дата: Четверг, 22.07.2021, 11:18 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Pelena,
Вот строка кода, как и что поменять нужно?

[vba]
Код
For j = 4 To iColl
                   
     If j = 5 Then
          Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@"))
     Else
                
End If
[/vba]


Vadym Gorokh

Сообщение отредактировал grh1 - Четверг, 22.07.2021, 11:36
 
Ответить
СообщениеPelena,
Вот строка кода, как и что поменять нужно?

[vba]
Код
For j = 4 To iColl
                   
     If j = 5 Then
          Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@"))
     Else
                
End If
[/vba]

Автор - grh1
Дата добавления - 22.07.2021 в 11:18
Pelena Дата: Четверг, 22.07.2021, 11:46 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19163
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Хм, что-то Format не справляется, попробуйте вместо
[vba]
Код
Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@")
[/vba]написать
[vba]
Код
Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року")
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеХм, что-то Format не справляется, попробуйте вместо
[vba]
Код
Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@")
[/vba]написать
[vba]
Код
Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року")
[/vba]

Автор - Pelena
Дата добавления - 22.07.2021 в 11:46
grh1 Дата: Четверг, 22.07.2021, 11:52 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Pelena,

а куда деть
[vba]
Код
Call ExportWord(MyArray(1, j),
[/vba]
эта же строка переноса в word...
выдает естественно ошибку.


Vadym Gorokh

Сообщение отредактировал grh1 - Четверг, 22.07.2021, 11:54
 
Ответить
СообщениеPelena,

а куда деть
[vba]
Код
Call ExportWord(MyArray(1, j),
[/vba]
эта же строка переноса в word...
выдает естественно ошибку.

Автор - grh1
Дата добавления - 22.07.2021 в 11:52
Pelena Дата: Четверг, 22.07.2021, 11:58 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19163
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Дык, я думала, что это рабочие строки макроса, и при вызове ExportWord уже предусмотрен формат.
Макрос ExportWord сколько аргументов требует?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеДык, я думала, что это рабочие строки макроса, и при вызове ExportWord уже предусмотрен формат.
Макрос ExportWord сколько аргументов требует?

Автор - Pelena
Дата добавления - 22.07.2021 в 11:58
grh1 Дата: Четверг, 22.07.2021, 12:01 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
[vba]
Код
Sub CreateDoc()
Dim MyArray(), BasePath As String, iFolder As String, iTemplate As String
Dim tmpArray, tmpSTR As String, iRow As Long, iColl As Long, i As Long, j As Long, q As Long

Application.ScreenUpdating = 0
On Error GoTo iEnd

iFolder = Range("FILE_WORD").Value: If Right(iFolder, 1) <> "\" Then iFolder = iFolder & "\"
iTemplate = Range("FILE_TEMPLATE").Value: If Right(iTemplate, 1) = ";" Then iTemplate = Left(iTemplate, Len(iTemplate) - 1)
BasePath = ThisWorkbook.Path & "\созданные документы\": Call FolderCreateDel(BasePath)

With Sheets("основной")
    iRow = .UsedRange.Row + .UsedRange.Rows.Count - 1: iColl = .UsedRange.Column + .UsedRange.Columns.Count - 1
    MyArray = .Range(.Cells(1, 1), .Cells(iRow, iColl)).Value
End With

'создаем скрытый объект Word
Set AppWord = CreateObject("Word.Application"): AppWord.Visible = False

'перебираем массив
For i = 2 To iRow
    If MyArray(i, 1) = "ok" Then
    
        'перебираем указанные word-шаблоны
        tmpArray = Split(MyArray(i, 3), ";")
        For q = 0 To UBound(tmpArray)
            tmpSTR = iFolder & tmpArray(q) & ".docx"
            If Len(Dir(tmpSTR)) > 0 Then
                Set iWord = AppWord.Documents.Open(tmpSTR, ReadOnly:=True)
            
                'делаем замену переменных
                For j = 4 To iColl
                    If j = 5 Then
                        Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "[$-uk-UA-x-genlower]dd mmmm yyyy року;@"))
                    Else
                    If j = 9 Then
                        Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "#,##0.00"))
                    Else
                        Call ExportWord(MyArray(1, j), MyArray(i, j))
                    End If
                    End If
                Next j
                
                iWord.SaveAs filename:=BasePath & MyArray(i, 2) & " - " & tmpArray(q) & ".docx", FileFormat:=12     'wdFormatXMLDocument = 12
                iWord.Close False: Set iWord = Nothing
            End If
            'tmpSTR = ""
        Next q
        'Erase tmpArray

    End If
Next i

AppWord.Quit: Set AppWord = Nothing
'Erase MyArray: BasePath = "": iFolder = "": iTemplate = ""

Application.ScreenUpdating = 1
MsgBox "Файлы сформированы.", vbInformation

Exit Sub

iEnd:
    AppWord.Quit: Set AppWord = Nothing
    'Erase MyArray: BasePath = "": iFolder = "": iTemplate = ""
    Application.ScreenUpdating = 1
    MsgBox "При обработке данных возникла ошибка.", vbCritical
End Sub

[/vba]


Vadym Gorokh

Сообщение отредактировал grh1 - Четверг, 22.07.2021, 12:06
 
Ответить
Сообщение[vba]
Код
Sub CreateDoc()
Dim MyArray(), BasePath As String, iFolder As String, iTemplate As String
Dim tmpArray, tmpSTR As String, iRow As Long, iColl As Long, i As Long, j As Long, q As Long

Application.ScreenUpdating = 0
On Error GoTo iEnd

iFolder = Range("FILE_WORD").Value: If Right(iFolder, 1) <> "\" Then iFolder = iFolder & "\"
iTemplate = Range("FILE_TEMPLATE").Value: If Right(iTemplate, 1) = ";" Then iTemplate = Left(iTemplate, Len(iTemplate) - 1)
BasePath = ThisWorkbook.Path & "\созданные документы\": Call FolderCreateDel(BasePath)

With Sheets("основной")
    iRow = .UsedRange.Row + .UsedRange.Rows.Count - 1: iColl = .UsedRange.Column + .UsedRange.Columns.Count - 1
    MyArray = .Range(.Cells(1, 1), .Cells(iRow, iColl)).Value
End With

'создаем скрытый объект Word
Set AppWord = CreateObject("Word.Application"): AppWord.Visible = False

'перебираем массив
For i = 2 To iRow
    If MyArray(i, 1) = "ok" Then
    
        'перебираем указанные word-шаблоны
        tmpArray = Split(MyArray(i, 3), ";")
        For q = 0 To UBound(tmpArray)
            tmpSTR = iFolder & tmpArray(q) & ".docx"
            If Len(Dir(tmpSTR)) > 0 Then
                Set iWord = AppWord.Documents.Open(tmpSTR, ReadOnly:=True)
            
                'делаем замену переменных
                For j = 4 To iColl
                    If j = 5 Then
                        Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "[$-uk-UA-x-genlower]dd mmmm yyyy року;@"))
                    Else
                    If j = 9 Then
                        Call ExportWord(MyArray(1, j), Format(MyArray(i, j), "#,##0.00"))
                    Else
                        Call ExportWord(MyArray(1, j), MyArray(i, j))
                    End If
                    End If
                Next j
                
                iWord.SaveAs filename:=BasePath & MyArray(i, 2) & " - " & tmpArray(q) & ".docx", FileFormat:=12     'wdFormatXMLDocument = 12
                iWord.Close False: Set iWord = Nothing
            End If
            'tmpSTR = ""
        Next q
        'Erase tmpArray

    End If
Next i

AppWord.Quit: Set AppWord = Nothing
'Erase MyArray: BasePath = "": iFolder = "": iTemplate = ""

Application.ScreenUpdating = 1
MsgBox "Файлы сформированы.", vbInformation

Exit Sub

iEnd:
    AppWord.Quit: Set AppWord = Nothing
    'Erase MyArray: BasePath = "": iFolder = "": iTemplate = ""
    Application.ScreenUpdating = 1
    MsgBox "При обработке данных возникла ошибка.", vbCritical
End Sub

[/vba]

Автор - grh1
Дата добавления - 22.07.2021 в 12:01
Pelena Дата: Четверг, 22.07.2021, 12:08 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19163
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Тогда я всё правильно написала
попробуйте вместо
Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@")

написать
Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року")

вся строка будет
[vba]
Код
Call ExportWord(MyArray(1, j), Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року"))
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТогда я всё правильно написала
попробуйте вместо
Format(MyArray(i, j), "[$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@")

написать
Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року")

вся строка будет
[vba]
Код
Call ExportWord(MyArray(1, j), Application.WorksheetFunction.Text(MyArray(i, j), "[$-uk-UA-x-genlower]DD MMMM YYYY року"))
[/vba]

Автор - Pelena
Дата добавления - 22.07.2021 в 12:08
grh1 Дата: Четверг, 22.07.2021, 12:13 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
странно - когда сам вставлял такую строку, получал ошибку, а Вашу скопировал и вставил - всё ok...
Что-то надо делать со своими руками-))).

спасибо большое Pelena, закрываем тему.


Vadym Gorokh
 
Ответить
Сообщениестранно - когда сам вставлял такую строку, получал ошибку, а Вашу скопировал и вставил - всё ok...
Что-то надо делать со своими руками-))).

спасибо большое Pelena, закрываем тему.

Автор - grh1
Дата добавления - 22.07.2021 в 12:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » формат даты в коде на украинском языке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!