ファイルを.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番目の方法でフォーマットされたファイルを取得しています。
次のサイトは、エクスポートを実行するためのVBマクロコードを示しています https://support.chartio.com/knowledgebase/exporting-csv-files-with-double-quotes-from -Excel
ExcelでCSVファイルを開き、二重引用符のインスタンスをすべて検索して置き換えます("
)。
この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
.csvの内容を含むテキストファイルを作成しました。そして私は・・・それから私は:
Delimited
を選択しましたtab
NOT comma
にチェックを入れました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 を見ると、埋め込まれた二重引用符は二重引用符で囲み、フィールドは二重引用符で区切る必要があります。
このスクリプトを使用します。
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ファイルを保存するため、保存されたファイルは他のアプリケーションで使用できます。