Страницы: 1
RSS
VBA формат даты при экспорте в csv
 
Всем привет
Копирую содержимое таблицы в переменную, а переменную потом записываю в фаил
Код
rowString = rowString & Chr(34) & tblArr(i, jSubA) & Chr(34) & ";"
Но поля типа даты сохраняются в формате числа типа 43342. Но такой формат не удобен, например потом для загрузки в PQ - приходиться делать лишние обработки по конвертации числа в дату.
Подскажите пожалуйста, как заставить данную строчку записывать в переменную значение с учетом форматирование, которое выбрано в Excel? В таблице я вижу нормальную дату, а в фаил число попадает. Благодарю!
Полный макрос:
Код
Sub csvTable(lName As String, tName As String, fName As String)

    Dim tbl As ListObject
    Dim csvFilePath As String
    Dim fNum As Integer
    Dim tblArr
    Dim rowArr
    Dim csvVal
    
    Dim fsT As Object
    Set fsT = CreateObject("ADODB.Stream")
    fsT.Type = 2 'Specify stream type - we want To save text/string data.
    'fsT.Charset = "utf-8" 'Specify charset For the source text data.
    fsT.Open 'Open the stream And write binary data To the object
   
    
    Set tbl = ThisWorkbook.Worksheets(lName).ListObjects(tName)
    csvFilePath = fName
    tblArr = tbl.Range.Value
       
    If tblArr(2, 1) = "" Then
        Debug.Print "Empty " & lName
        Call statUpdate(fName, "EMPTY")
        Exit Sub
    End If
       
    For i = 1 To UBound(tblArr, 1)
        'rowArr = tblArr(i, 1)
        For jSubA = 1 To UBound(tblArr, 2)
            rowString = rowString & Chr(34) & tblArr(i, jSubA) & Chr(34) & ";"
        Next jSubA
        fsT.WriteText rowString & Chr(10)
        rowString = ""
    Next i
    
    
    fsT.SaveToFile fName, 2
    Call statUpdate(fName, lName)
    
    Set tblArr = Nothing
    Set rowArr = Nothing
    Set csvVal = Nothing
End Sub43342
 
Цитата
Vsevolod написал:
с учетом форматирование, которое выбрано в Excel?
- т.е. своё заранее определённое форматирование не годится? Тогда для каждой конкретной ячейки нужно извлечь формат, и затем применить его к элементу массива перед записью в строку.
Но зачем так сложно?
 
Hugo, Вы правы - дурной макрос был, нашел примером. Изменил на классическое копирование.
Спасибо Вам!  
Страницы: 1
Наверх