EDITAR:
Só levei quase dois anos para voltar e editar isso. Aqui está uma solução que, esperamos, coloque todos os seus dados entre aspas e salve como CSV. Você precisará adicionar a referência Microsoft Scripting Runtime
ao seu projeto VBA (em 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
Tentativa anterior falhada (deixada apenas para referência; por favor, não use isso):
Aqui está uma macro que abrirá uma nova pasta de trabalho e inserirá todos os dados da sua planilha com cada valor entre aspas. Você pode salvar essa nova pasta de trabalho como um .CSV sem perturbar sua pasta de trabalho original. Isso funcionará mesmo que seus dados originais incluam fórmulas.
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