Тройные кавычки при сохранении файла Excel как CSV VBA - PullRequest
0 голосов
/ 23 ноября 2018

Я получаю тройные кавычки в каждой ячейке при сохранении файла Excel в формате CSV, он должен быть примерно равен "Hello World", но при открытии файла CSV я получаю """Hello World""".CSV разделен запятой

edit: если я сохраню его без кавычек, его сохранение будет похоже на Hello world

Do While xExcelFile <> ""
    newFileName = Replace(xExcelFile, " ", "_")

'*****************************************************
    For Each c In Range("A1").CurrentRegion
        If Not IsNumeric(c.Value) Then
            c.Value = Chr(34) & c.Value & Chr(34)
        End If
    Next c
'******************************************************
    'Saving file as csv
SaveFile:
    ActiveWorkbook.SaveAs fileName:=xSPath & newFileName & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close

    'workbooks transformed log into cells
    Cells(cont, 6).Value = newFileName
    cont = cont + 1

NextLoop:
    'next file
    xExcelFile = Dir
Loop

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Попробуйте это

Sub test()
    Dim xSpath As String
    Dim newFileName As String
    Dim rngDB As Range
    xSpath = ThisWorkbook.Path & "\"
    newFileName = "test1"

    Set rngDB = Range("a1").CurrentRegion
    TransToCsv rngDB, XPath & newFileName & ".csv"
End Sub

Sub TransToCsv(rngDB As Range, strFile As String)
    Dim vDB, vR() As String, vTxt()
    Dim i As Long, j As Integer
    Dim objStream
    Dim strTxt As String

    Set objStream = CreateObject("ADODB.Stream")

    vDB = rngDB

    For i = 1 To UBound(vDB, 1)
        n = n + 1
        ReDim vR(1 To UBound(vDB, 2))
        For j = 1 To UBound(vDB, 2)
            If IsNumeric(vDB(i, j)) Then
                vR(j) = vDB(i, j)
            Else
                vR(j) = Chr(34) & vDB(i, j) & Chr(34)
            End If
        Next j
        ReDim Preserve vTxt(1 To n)
        vTxt(n) = Join(vR, ",")
    Next i
    strTxt = Join(vTxt, vbCrLf)
    With objStream
        '.Charset = "utf-8"
        .Open
        .WriteText strTxt
        .SaveToFile strFile, 2
        .Close
    End With
    Set objStream = Nothing

End Sub
0 голосов
/ 23 ноября 2018

Используя эту часть вашего кода:

'*****************************************************
    For Each c In Range("A1").CurrentRegion
        If Not IsNumeric(c.Value) Then
            c.Value = Chr(34) & c.Value & Chr(34)
        End If
    Next c
'******************************************************
    'Saving file as csv
SaveFile:
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\teststs" & ".csv", FileFormat:=xlCSV, CreateBackup:=False

Мой файл прекрасно сохраняется с одним набором двойных кавычек, как и ожидалось ... так что, возможно, проблема кроется где-то еще в вашем коде.Какой путь вы сохраняете?Это то же самое, что папка, из которой вы загружаете файлы Excel?

Думая, что вы также можете просматривать циклы CSV, отсюда и дополнительные кавычки ...

...