私はいくつかの.csvファイルを持っています。それらのいくつかはカンマで区切られている、いくつかはタブで区切られている(多分それらは.tsv ...と呼ばれるべきです)
Excelがインストールされている場合、csv
拡張子はExcelに関連付けられます。ただし、これらのファイルの1つをExcelで開くと、すべてが同じ列にダンプされ、コンマは区切り文字として解釈されません。
[ファイル] - > [インポート]の代わりに、ファイルを選択し、内容を正確に解釈する方法(区切り記号、データ型など)を選択できます。ただし、ほとんどの場合は明確な表形式でファイルを見てください。 Excelで処理したくありません。
Excelに区切り記号を自動解釈させ、CSVファイルを開くとすぐに適切なテーブルとして表示させる方法はありますか。このようなファイルのクイックビューアとしてExcelを使用できるように、これが必要です。
それがなければExcelはCSVファイルに関連付けられないでしょう。
CSVファイルを開くときに、ExcelはList separator
というシステムの地域設定を使用して、使用する既定の区切り文字を決定します。
Microsoft Excelは.csvファイルを開きますが、システムの地域設定によっては、カンマの代わりにセミコロンが区切り文字として使用されることがあります。 (from ウィキペディア )
Windowsでは、 OfficeサポートWebサイト に指定されているように、List separator
のRegional and Language Options
設定を変更できます。
CSVテキストファイルの区切り記号を変更する
- Windowsのスタートメニューをクリックします。
- コントロールパネルをクリックします。
- [地域と言語のオプション]ダイアログボックスを開きます。
- [地域のオプション]タブをクリックします。
- カスタマイズ/追加設定(Win10)をクリックします。
- [リスト区切り文字]ボックスに新しい区切り文字を入力します。
- OKを2回クリックします。
注:これは、小数点記号がコンマとしても指定されていない場合にのみ機能します(上記のWikipediaの引用に従って)。そうである場合、Excelはnot選択されていても、リスト区切り文字としてカンマを使用します。米国以外の多くの地域では、カンマがデフォルトの小数点記号です。
Mac OS Xでは、この設定は小数点記号の設定(言語と地域の_(/システム環境設定の場合、詳細)に移動します。小数点の区切り文字がポイントの場合はデフォルトのCSVの区切り文字はコンマになりますが、小数点の区切り文字がコンマの場合はデフォルトのCSV区切り文字はセミコロンになります。
あなたがコメントであなた自身を言ったように、MacユーザーがすぐにそれらのCSVファイルを見るための代替手段があります。これはQuick Lookと呼ばれる quicklook-csv のためのプラグインで、区切り文字の検出を処理します。
ファイルの形式を変更するのではなく、Excelのみを対象としている場合は、次のExcelのテクニックを使用すると役立ちます。
リスト区切り文字として "、"を使用してファイルを開くために、テキストの"sep=,"
(引用符を含む)を使用してファイルの先頭に新しい行を追加します。
Windowsの地域設定の変更を避け、一貫した結果を得るための非常に簡単なトリックです。しかし、それはExcel特有のものです。
少なくともExcel 2016では、sep=,
を囲む引用符は必要ありません。
ファイルがタブで区切られている場合、sep=\t
は引用符の有無にかかわらず問題なく機能することがわかりました。
地域設定の区切り文字がコンマではなくセミコロン(オランダ語区切り文字)の場合は、CSVファイルの名前をTXTファイルに変更します。 TXTファイルを右クリックして[プログラムから開く]を選択し、[Excel]を選択します。 Excelで最初の列を選択し、リボン内のデータを選択してテキストを列に区切ります。
OR
LibreOfficeをインストールし、LibreOffice CalcでCSVファイルを開きます。
最善の方法は、csv拡張子の付いたテキストファイルに保存することです。
Sub ExportToCSV()
Dim i, j As Integer
Dim Name As String
Dim pathfile As String
Dim fs As Object
Dim stream As Object
Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists
i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"
Set stream = fs.CreateTextFile(pathfile, False, True)
fileexists:
If Err.Number = 58 Then
MsgBox "File already Exists"
'Your code here
Return
End If
On Error GoTo 0
j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)
stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))
j = j + 1
i = i + 1
Loop
stream.Close
End Sub
オランダ語では、Windows 7上のExcel 2008がRFC 4180に準拠していないという問題がありました。
「改行(CRLF)、二重引用符、およびカンマを含むフィールドは、二重引用符で囲む必要があります。」
コンマ区切りファイルでは、二重引用符で囲まれたコンマ(オランダの小数点区切り文字)を持つフィールドが正しくありました。オランダ語のロケールでは、小数点記号は,
、リスト区切り記号は;
なので、Excelは,
が両方に使用されているファイルを読み取ることができませんでした(コントロールパネルでリスト区切り記号を,
に明示的に変更した後でも)。
入力は以下のようになります。
"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21
解決策は@ user280725です。
1行目に挿入するにはメモ帳を使用します。
sep=,
(これは彼の解決策の中のユーザー@zakinsterのメモはもはや適用する必要がないことを意味します。)
CSVファイルをメモ帳などの簡単なエディタで調べて、フォーマットが正しいことを確認してください。
VBで作成したCSVファイルがExcelの別の列で開かれないという愚かなバグを解決した後、この回答を追加しました。行の書き方が各行を引用符で囲んでいることがわかりました。 Excelは引用符を隠し、列Aに行全体を表示し、あたかもそれが私のコンマ区切り文字を無視しているように見せました。