- ベストアンサー
CSVが文字コードUTF-8かどうかの判定
かなりデータ量が多い(10万レコード超)CSVファイルが、100件近くあります。これをエクセルに取り込んで順次同じような作業をしようと思っています。とりあえずCSVを以下のコードで開いています。 Sub CSV入力4() 'クエリーテーブルを使ったCSV読み込みVBAコード Dim myFile As Variant myFile = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", Title:="CSVファイルの選択") If myFile = False Then Exit Sub End If ActiveSheet.Cells.Clear With ActiveSheet.QueryTables.Add(Connection:="text;" & myFile, Destination:=Range("A1")) ' .TextFilePlatform = 932 'Shift_Jis .TextFilePlatform = 65001 'UTF8 .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False .Delete End With MsgBox "読込完了" End Sub 問題は、CSVに拡張子で区別できないUTF-8のCSVファイルがあることです。事前にわかっていれば .TextFilePlatform = 932 'Shift_Jis .TextFilePlatform = 65001 'UTF8 の使い分けで対応できるのですが、開いてみて文字化けがあるかどうか調べないとわかりません。自動的に判定する方法はないでしょうか?
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (10)
- SI299792
- ベストアンサー率48% (719/1487)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- HohoPapa
- ベストアンサー率65% (454/692)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
- kkkkkm
- ベストアンサー率65% (1624/2466)
関連するQ&A
- 今日と昨日の日付.CSVファイルを選択し読み込む
日付.csvのファイルが下記のように同じフォルダーに自動書き出しされています。 20171101.csv 20171102.csv 20171103.csv このファイル群から、今日と昨日のファイルだけを選択して、一枚のxlsシートに 書き出すマクロはどうすればいいでしょうか? 現在は、下記11行目を日々書き直して処理しています。 よろしくご教示をお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a ' Range("B4:E10000").Select Selection.ClearContents Range("B4").Select With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;Z:\bme280-data\20171130.csv", Destination:=Range( _ "$B$4")) .Name = "No1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False Call Macro2 End With End Sub
- ベストアンサー
- Excel(エクセル)
- エクセルで指定のシートを指定の文字コードで出力する方法
はじめまして、エクセルのシートを文字コードを指定して出力したいのですが、どうやってよいかわからず困っております。 みなさんご教授いただければと思います。 ■やりたいこと 複数のシートがあるxlsファイルがあり、その中で特定のシートを UTF-16の文字コードで.txt出力したいです。 ■現在理解していること 【その1】 shift-jisで出力する方法は、以下のコードで行えることがわかって います。(以下のコードはCSV形式での出力ですが気にしないでください) ------------------------------------------ ''''''''''''''''''''''''''''''''' '指定したシートをcsv出力 ''''''''''''''''''''''''''''''''' Sub aaa_CSV出力() Dim Sh As Worksheet Dim strName As String Application.ScreenUpdating = False Application.DisplayAlerts = False '定型はここから Sheets("シート”).Activate 'csv出力したいシート名(=ファイル名) strName = ActiveWorkbook.Path & "\csv\" & ActiveSheet.Name & ".csv" 'csv出力する場所 'strName = "D:\csv_out\" & ActiveSheet.Name & ".csv" 'csv出力する場所 ActiveSheet.Copy With ActiveWorkbook .SaveAs Filename:=strName, FileFormat:=xlCSV .Close savechanges:=False End With End Sub ------------------------------------------ 【その2】 以下の参照設定を有効にして、以下の機能を使用しないと おそらく文字コードの指定は厳しいと、認識しています。 Microsoft ActiveX Data Object X.X Library 当方VBA自体は初心者で、サンプルのコードを書き換えて使っている程度です。 皆さんのお知恵を貸していただければと思います。 よろしくお願いいたします!!!
- 締切済み
- Visual Basic
- windowsでのRailsの文字コードをUTF-8にしたい
InstantRailsを使用しているのですが、文字コードをUTF-8にしたいと思っています。 Railsが作成するファイルがshift-jisになるのですが、これをUTF-8になるように変更する方法はあるのでしょうか?
- 締切済み
- Ruby
- 数クリックで文字コードを変換したい
csvファイルの文字コードを数クリックでUTF8→shift-jisに変換したいのですが、何か良い方法はございませんか? いろいろと調べてみたものの、どれもむずかしく困っております。
- 締切済み
- Windows 10
- 文字コードの違うデータを判別したい
データの文字コードが異なるファイルを確認します。 以下のスクリプトで$get_csvのデータの文字コードを判別にShift-JISで別のファイルに格納したいのです。 (スクリプト) $get_csv = get("$_[0]"); if ($get_csv =~ /utf-8/i) { &jcode'convert($get_csv,'sjis','utf-8'); } if ($get_csv =~ /EUC-JP/i) { &jcode'convert($get_csv,'sjis','euc'); } (ここまで) &jcode'convertの使い方が悪いのか?データをうまく変えられていない感じがします。 上記の内容で説明が足りてますでしょうか? よろしくお願いいたします。
- 締切済み
- Perl
- 複数のCSVファイルを自動でエクセルに変換したい
フォルダの中に、300近いCSVフォルダがあります。 ネットで探したマクロVBAでやってみたところ、一つのCSVファイルを選び、それをエクセルファイルに変換できました。 このマクロを使って、フォルダ内にあるすべてのCSVファイルを一気にエクセルに変換するには、どうしたらいいのでしょうか。 ご教授のほど、よろしくお願いいたします。 Sub CSVからXLSX() Dim varFileName As Variant varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _ Title:="CSVファイルの選択") If varFileName = False Then Exit Sub End If Workbooks.Open Filename:=varFileName ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.Cells ActiveWorkbook.Close SaveChanges:=False End Sub
- 締切済み
- Excel(エクセル)
- 先頭にゼロを含む数字列のcsvをExcelに取込む
UTF-8のCSVファイルがあり、含まれるデータに先頭がゼロで始まる数字列があります(例えば00123や0123で桁数は不定)。 これをVBAを使ってExcelに取り込み、ゼロ付きのまま扱いたいのですが、取り込んだデータは先頭のゼロが欠けてしまいます。 VBAコードは以下のとおりです。 どこを見直したらよろしいでしょうか。 strConnPhrase = "TEXT;" & strFilePath Set qt = ws.QueryTables.Add(Connection:=strConnPhrase, Destination:=ws.Range("A1")) With qt .TextFilePlatform = 65001 .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .PreserveFormatting = True .RefreshStyle = xlOverwriteCells .Refresh .Delete End With
- ベストアンサー
- Excel(エクセル)
- CSVデータをEXCELシートに展開したい
CSVデータをEXCELシートに展開しようとしています。 シート1にボタンを用意して、クリックするとシート2に展開されるというようなことをしたいのです。 以下のコード(マクロを組んで作られるコードです)だと、シート2に取り込まれないです。 どのようにすればシート2に展開されるでしょうか? Private Sub CommandButton2_Click() Dim SH As Worksheet ' Set SH = Worksheets("Sheet2") With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\temp\test1.", _ Destination:=Range("A1")) .Name = "test1 .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- UTF8CSVをシフトJISCSVへ文字コード変換
UTF8形式CSVデータをシフトJIS形式CSVデータに 文字コード変換するにはVBAプログラムの勉強を すれば可能でしょうか??
- ベストアンサー
- その他(プログラミング・開発)
- 文字コードの変換(Shift-JISからUTF8)
文字コードがShift-JISのCSVファイルを読み込み、UTF-8のテキストファイルに出力するのに プログラムの中で変更しようとしているのですが、うまくいきません。出力ファイルの文字コードを 確認するとShift-JISのままです。 どなたか教えていただけないでしょうか? ActivePerl v5.16.0を使用し、Encodeモジュールのfrom_toを使用しています。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; my $input_file="input.csv"; my $output_file="output.txt"; open (IN, $input_file) or die "$!"; open (OUT, ">$output_file") or die "$!"; while (<IN>){ chomp ($_); my @data=split(/,/,$_); for(my $i=0;$i<@data;$i++){ $data[$i]=Encode::from_to($data[$i],'shiftjis','utf8'); #Shift-JISからUTF-8に変換 $data[$i]=~s/\s+//g; print OUT $_; } print OUT "\n"; } close (IN); close (OUT);
- ベストアンサー
- Perl
お礼