web-dev-qa-db-ja.com

カンマと引用符を使用してExcelに.csvを保存させるにはどうすればよいですか?

ファイルを.csvとして保存しようとしていますが、Excelでは標準のカンマ区切りと引用符が使用されていません。これが私が欲しいものの例です:

"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"

これはExcelが実際に私に与えているものです:

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

では、何が起こっているのでしょうか。なぜ引用符も表示されないのでしょうか。私が従ったプロセスは、テキストファイルオプションからのデータを使用して.csv(スニペット1に表示)からファイルをインポートし、それを変更してから再度.csvとして保存することでしたが、2番目の方法でフォーマットされたファイルを取得しています。

3
John August

次のサイトは、エクスポートを実行するためのVBマクロコードを示しています https://support.chartio.com/knowledgebase/exporting-csv-files-with-double-quotes-from -Excel

  1. ExcelでCSVファイルを開き、二重引用符のインスタンスをすべて検索して置き換えます(")。

  2. このMicrosoftKB記事に記載されている手順に従ってください。ただし、Microsoft KB記事で提供されているマクロを使用する代わりに、代わりに以下のマクロを使用してください。

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
2
Mark Ashworth

.csvの内容を含むテキストファイルを作成しました。そして私は・・・それから私は:

  1. .txtをExcelにインポートし、Delimitedを選択しました
  2. tab NOT commaにチェックを入れました
  3. Generalではなくtextを選択しました

これが私の出力です:

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"

各プログラム/アプリケーションには、コンマ区切りが実際に何であるかについての独自の解釈があります。私のExcelの例では、技術的にはcomma delimitedを使用しませんでしたが、tab delimitedを使用しました。達成しようとしていることに応じて、text delimitedを使用することもできます。

RFC418 を見ると、埋め込まれた二重引用符は二重引用符で囲み、フィールドは二重引用符で区切る必要があります。

0

このスクリプトを使用します。

出典: ExcelのCSVを二重引用符でエクスポート

ExcelマクロMicrosoftは、Excel内からマクロの形式でVisual Basicへのアクセスを提供します。これにより、Excelだけでは管理できないことを実行できます。 VBマクロを作成するには、Visual Basic Editor(Alt + F11)を開き、[挿入]> [モジュール]メニューから開きます。これにより、次のスクリプトでコピーして貼り付ける新しいモジュールコードウィンドウが開きます。 :

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

それは私にとって同じ問題を修正しました。アプリケーションからExcelにCSVをエクスポートし、編集するときにCSVファイルを保存していました。それらをチェックした後、カンマ制限値を囲む引用符はありませんでしたが、このスクリプトは引用符でCSVファイルを保存するため、保存されたファイルは他のアプリケーションで使用できます。

0
rudolph