1

Как экспортировать файл CSV, в котором значения и поля заключены в двойные кавычки (") из Excel 2004 (Mac)?

Например

"Name","Telephone"
"John Doe","555-5009"

1 ответ1

-1

РЕДАКТИРОВАТЬ:
Мне понадобилось около двух лет, чтобы вернуться и отредактировать это. Вот обходной путь, который, мы надеемся, обернет все ваши данные в кавычки и сохранит их как CSV. Вам нужно будет добавить ссылку на Microsoft Scripting Runtime в свой проект VBA (в разделе « Tools > « References...).

Sub addquotes()
Dim s As Worksheet
Dim tmpR As Range
Dim tmpArray() As Variant, out As String
Dim fso As FileSystemObject, ts As TextStream

Application.DisplayAlerts = False
Set s = ActiveSheet
Set tmpR = s.UsedRange

'Set format of all cells as Text.
tmpR.NumberFormat = "@"
tmpArray = tmpR.Value

For i = LBound(tmpArray, 1) To UBound(tmpArray, 1)
    For j = LBound(tmpArray, 2) To UBound(tmpArray, 2)
        If j = LBound(tmpArray, 2) Then out = out & Chr(34)
        out = out & tmpArray(i, j) & Chr(34)
        If j <> UBound(tmpArray, 2) Then
            out = out & "," & Chr(34)
        Else
            out = out & vbLf
        End If
    Next j
Next i
Set fso = New FileSystemObject
Set ts = fso.OpenTextFile("C:\Users\Editor 3\Desktop\yourcsv.csv", ForWriting, True)
ts.Write out
ts.Close
Application.DisplayAlerts = True
End Sub

Предыдущая неудачная попытка (оставлена только для справки; пожалуйста, не используйте это):
Вот макрос, который откроет новую книгу и введет все данные с вашего листа, каждое значение будет заключено в кавычки. Затем вы можете сохранить эту новую книгу как.CSV, не мешая вашей оригинальной книге. Это будет работать, даже если ваши исходные данные содержат формулы.

Sub addquotes()

Dim s As Worksheet, newS As Worksheet
Dim tmpR As Range
Dim tmpArray() As Variant

Set s = ActiveSheet
Set tmpR = s.UsedRange

'Loads all data from sheet into array.
tmpArray = tmpR.Value

'Adds quotes around members of array if not blank.
For i = 1 To UBound(tmpArray, 1)
    For j = 1 To UBound(tmpArray, 2)
        If tmpArray(i, j) <> "" Then
            tmpArray(i, j) = """" & tmpArray(i, j) & """"
        End If
    Next j
Next i

'Open new workbook and enter transformed data.
Set NewBook = Workbooks.Add
Set newS = NewBook.Sheets(1)
newS.Range("A1").Resize(UBound(tmpArray, 1), UBound(tmpArray, 2)) = tmpArray

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .