Como posso fazer o Excel salvar um arquivo .csv usando vírgulas e citações?

3

Eu estou tentando salvar o arquivo como um .csv, no entanto, o Excel não está usando o separador de vírgula padrão e aspas. Aqui está um exemplo do que eu quero:

"0","70","0","4/29/2012 12:00","13311250""1","70","0","4/30/2012 12:00","13311250""2","70","0","5/1/2012 12:00","13311250"

Isso é o que o Excel realmente está me dando:

0   70  0   4/29/2012 12:00 13311250
1   70  0   4/30/2012 12:00 13311250
2   70  0   5/1/2012 12:00  13311250

Então, o que está acontecendo, por que eu não estou nem recebendo aspas? O processo que segui foi para importar o arquivo de .csv (mostrado no snippet 1) usando dados da opção de arquivo de texto, modifiquei-o e salvei-o novamente como um arquivo .csv, mas estou obtendo um arquivo que está formatado da segunda maneira .

    
por John August 11.09.2015 / 20:06

3 respostas

2

O site a seguir mostra o código de macro do VB para executar o link de exportação

  1. Abra seu arquivo CSV no Excel > Localize e substitua todas as instâncias de aspas duplas ( " ).

  2. Siga as instruções fornecidas neste artigo da base da Microsoft. No entanto, em vez de usar a macro fornecida no artigo da Microsoft, use a seguinte em seu lugar.

Sub QuoteCommaExport()
    ' Dimension all variables.
    Dim DestFile As String
    Dim FileNum As Integer
    Dim ColumnCount As Long
    Dim RowCount As Long
    Dim MaxRow As Long
    Dim MaxCol As Long


   ' Prompt user for destination file name.
   DestFile = InputBox("Enter the destination filename" _
  & Chr(10) & "(with complete path):", "Quote-Comma Exporter")

   ' Obtain next free file handle number.
   FileNum = FreeFile()

   ' Turn error checking off.
   On Error Resume Next

   ' Attempt to open destination file for output.
   Open DestFile For Output As #FileNum

   ' If an error occurs report it and end.
   If Err <> 0 Then
      MsgBox "Cannot open filename " & DestFile
      End
   End If

   ' Turn error checking on.
   On Error GoTo 0

   MaxRow = ActiveSheet.UsedRange.Rows.Count
   MaxCol = Selection.Columns.Count

   MsgBox "Processing this many rows: " & MaxRow 
   MsgBox "Processing this many columns: " & MaxCol

   ' Loop for each row in selection.
   For RowCount = 1 To MaxRow

      ' Loop for each column in selection.
      For ColumnCount = 1 To MaxCol

          ' Write current cell's text to file with quotation marks.
          Print #FileNum, """" & Selection.Cells(RowCount, _
          ColumnCount).Text & """";

          ' Check if cell is in last column.
          If ColumnCount = MaxCol Then
              ' If so, then write a blank line.
              Print #FileNum,
          Else
             ' Otherwise, write a comma.
             Print #FileNum, ",";
          End If
          ' Start next iteration of ColumnCount loop.
      Next ColumnCount
  ' Start next iteration of RowCount loop.
  Next RowCount

' Close destination file.
Close #FileNum
End Sub
    
por 20.10.2016 / 15:27
0

Eu criei um arquivo de texto com o seu conteúdo .csv. Eu então:

  1. importou o .txt para o Excel e selecionou Delimited
  2. marquei tab NÃO comma
  3. selecionei General não text

Aqui está minha saída:

0,"70","0","4/29/2012 12:00","13311250""1","70","0","4/30/2012 12:00","13311250""2","70","0","5/1/2012 12:00","13311250"

Cada programa / aplicativo tem sua própria interpretação do que realmente é delimitado por vírgulas. No meu exemplo do Excel, eu tecnicamente não usei comma delimited , mas usei tab delimited . Você também pode usar text delimited , dependendo do que você está tentando realizar.

Olhando através do RFC4180 , as duplas incorporadas devem ser duplicadas, e o campo deve ser ser delimitado com aspas duplas.

    
por 11.09.2015 / 22:26
0

Use este script.

Fonte: Exportar CSVs do Excel com citações duplas

Excel Macros Microsoft provide access to Visual Basic in the form of Macros from within Excel that allow us to do things Excel can’t manage by itself. To create a VB Macro open the Visual Basic Editor (Alt+F11) then from the menu Insert > Module. This should open a new module code window that you should copy and paste in the following script:

Sub CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
ListSep = Application.International(xlListSeparator)
  If Selection.Cells.Count > 1 Then
    Set SrcRg = Selection
  Else
    Set SrcRg = ActiveSheet.UsedRange
  End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
  CurrTextStr = ìî
For Each CurrCell In CurrRow.Cells
  CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
  CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End Sub

Fixou o mesmo problema para mim. Eu tinha exportado um CSV de um aplicativo para o Excel e, ao editá-lo, estava salvando arquivos CSV. Depois de verificá-los, eles ficaram sem aspas em torno dos valores limitados por vírgula, mas esse script salva arquivos CSV com aspas, portanto, o arquivo salvo pode ser usado em outros aplicativos.

    
por 12.06.2017 / 02:44