Доброго дня, уважаемые знатоки! Суть: в файле эксель прописан макрос перевода данных из excel в word... все работает как нужно, за маленьким исключение - ДАТА
В ячейке excel выставлен формат даты такой: [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@ и отображается дата так: 09 червня 2021 року.
1. Когда в коде прописываю этот формат [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@, то получаю в вёрде такую абракадабру
2. Когда же в коде прописываю вот этот формат [$-uk-UA-x-genlower]dd mmmm yyyy року;@, (т.е. вписываю англ. буквы) то получаю в вёрде вот такое
Подскажите пожалуйста, что делаю не так и какой формат всё-таки вставлять в код, чтобы получить желаемое?!
Спасибо
Доброго дня, уважаемые знатоки! Суть: в файле эксель прописан макрос перевода данных из excel в word... все работает как нужно, за маленьким исключение - ДАТА
В ячейке excel выставлен формат даты такой: [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@ и отображается дата так: 09 червня 2021 року.
1. Когда в коде прописываю этот формат [$-uk-UA-x-genlower]ДД ММММ ГГГГ року;@, то получаю в вёрде такую абракадабру
2. Когда же в коде прописываю вот этот формат [$-uk-UA-x-genlower]dd mmmm yyyy року;@, (т.е. вписываю англ. буквы) то получаю в вёрде вот такое
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
iEnd: AppWord.Quit: Set AppWord = Nothing 'Erase MyArray: BasePath = "": iFolder = "": iTemplate = "" Application.ScreenUpdating = 1 MsgBox "При обработке данных возникла ошибка.", vbCritical End Sub
[/vba]
[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