- 締切済み
ExcelでUTF-8のcsvデータを表示するには
KenKen_SPの回答
- KenKen_SP
- ベストアンサー率62% (785/1258)
もう読んでないかもしれませんが、、、 UTF-8 には BOM(Byte Order Mark)があるものと、無いものが あります。公称ではありませんが、一般的には ・UTF-8 (BOM有り) ・UTF-8N(BOM無し) などの呼び方で区別されるようです。 Excel で UTF-8 エンコードされた CSV を開くには、この BOM が 無いと文字化けします。そのシステムから出力された CSV は、 UTF-8N なのでしょう。対策として、 ・TeraPad などのエディタで「文字コード指定保存」コマンドを 使い、UTF-8(BOM有り)で保存しなおす ・VBA で BOM バイナリをくっつけてから開く などの方法がとれそうです。 後者の VBA を利用するなら以下のようなソースになると思いますが、 エディタを使った方が簡単でしょう。 なお、下記ソースは必要最小限のことしか書いてません。試す場合は、 バックアップをとってからでお願いします。 勘違い回答ならばスルーの方向で。。 Public Sub OpenCSV_UTF8() Dim fn As String fn = CStr(Application.GetOpenFilename("CSVファイル (*.csv), *.csv", _ MultiSelect:=False)) If UCase$(fn) = "FALSE" Then Exit Sub End If If AddUTF8BomBinary(fn) Then Dim wb As Workbook Set wb = Workbooks.Open(fn) End If End Sub ' // UTF-8 エンコードされたファイルの BOM の有無を確認し、 ' // BOM 無し(UTF-8N)ならば、BOM 付きで上書きする ' Public Function AddUTF8BomBinary(ByVal fn As String) As Boolean Const adTypeBinary As Long = 1 Const adSaveCreateOverWrite As Long = 2 On Error GoTo Err_ ' UTF-8 BOM バイナリデータ Dim bin(2) As Byte bin(0) = &HEF bin(1) = &HBB bin(2) = &HBF ' ファイルからバイナリストリームを作成 Dim stm1 As Object ' ADODB.Stream Set stm1 = CreateObject("ADODB.Stream") stm1.Type = adTypeBinary stm1.Open stm1.LoadFromFile fn ' UTF-8 BOM の有無確認 Dim bHasBom As Boolean Dim i As Long bHasBom = True For i = 0 To UBound(bin) If stm1.Read(1)(0) <> bin(i) Then bHasBom = False Exit For End If Next i ' BOM 無し(UTF-8N)ならBOMを加えて上書きする If Not bHasBom Then Dim stm2 As Object ' ADODB.Stream Set stm2 = CreateObject("ADODB.Stream") stm2.Type = adTypeBinary stm2.Open stm2.Write bin stm1.Position = 0 stm1.CopyTo stm2 stm1.Close stm2.SaveToFile fn, adSaveCreateOverWrite stm2.Close End If AddUTF8BomBinary = True Bye_: On Error Resume Next stm1.Close: Set stm1 = Nothing stm2.Close: Set stm2 = Nothing Exit Function Err_: MsgBox Err.Description, vbCritical Resume Bye_ End Function
関連するQ&A
- CSVをエクセルで開いたときの表示設定など
例えば、あるCSVに住所とフリーワードなどのフィールドがあります。 --------------------------- name,jusho1,jusho2,jusho3,comment A,東京都,品川区●●,1-1,"あいうえお" B,東京都,千代田区●●,2-1,"かきくけこ" C,東京都,港区●●,3-1,"さしすせそ" --------------------------- これを、そのままエクセルで開くと、jusho3のフィールドが日付で表示されてしまいます。 この事象を、エクセルの設定などで改善する策はあるのでしょうか。 利用環境はwindowsXPで、Excel2007です。 なお、エクセルの外部データ読み込み機能を使い、文字列型で読み込めば該当の フィールドは改善することはわかっているのですが、commentの値に改行が含まれ ていると、その改行で1段下にずれて、変なレコードとして登録されてしまうみたいです。 ちなみに、これは最終的にエクセルで別場所に納品する必要があるため、ACCESS で代用することはできません(ACCESSでこの事象が回避できるのは確認しました)。 また、ACCESSに一度インポートしてからエクセルにインポートするということもできま せん(ソフトウェア使用権限と操作者リテラシーの問題もあり) いろいろすみませんが、ご回答お願いします。
- ベストアンサー
- オフィス系ソフト
- 改行区切りのテキストをExcelに取り込みたい
改行区切りのテキストを以下のようにExcelに取り込みたいのですが、やり方がわかりません。どうぞやり方を教えてください。 山田太郎 住所:千葉 性別:男 佐藤愛子 住所:山梨 性別:女 ↓↓↓↓↓↓↓↓↓↓ 名前 |住所|性別 山田太郎|千葉|男 佐藤愛子|山梨|女 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- UTF-8のCSVファイルを開く
エクセル2000でUTF-8の文字コードで作られたCSVファイルを開くと 文字化けしてしまいます。 文字化けせずに開く方法を御存知の方、教えてください。 VBAを使う方法でも構いません。(コードを教えてください。) 宜しくお願いします。 以上
- 締切済み
- Visual Basic
- CSVをエクセルでアップデートしたいのですが
現在、ホームページに設置したデータベース検索CGIに入れてある会員名簿のcsvファイルがあるんですが、 これがエクセルで 会員番号 氏名 郵便番号 住所 TEL 1 鎌倉太郎 123-0001 東京都中央区架空町2-21-13 03-5123-0125 2 市原三郎 456-0001 東京都中央区架空町1-51-13 03-5123-0125 3 山田洋子 789-0001 東京都中央区架空町3-28-11 03-5123-0125 4 船橋香織 876-0001 東京都中央区架空町4-24-14 03-5123-0125 5 相模大介 321-0001 東京都中央区架空町5-21-10 03-5123-0125 6 川崎花子 888-0001 東京都中央区架空町1-11-11 03-5123-0125 と表示されるようになっているとします。 ここに、更新されたデータだけ抽出された 2 市原三郎 456-0001 東京都新宿区番外町4-55-66 03-5123-0125 4 浜松香織 876-0001 静岡県三島市新天町5-12-10 052-123-0125 6 川崎花子 444-0001 千葉県松戸市某乃町5-21-10 047-523-0125 というcsvファイルが友人からメールで届いたとしたら、このデータを読み込むことや、それに準じるいくつかの簡単な操作だけで、同じ会員番号のデータだけ上書きされるようにする事って出来ないでしょうか? 私はエクセルに関しては殆ど無知で、csvファイルを表として見たり、ソートしたりするためにしか使ったことがない人間なので、もし私が望んでいる事が可能でしたら、メニューバーの「○○」から「×××」という項目に入って…などと、ステップを具体的に教えて頂けるとありがたいのですが…。
- ベストアンサー
- オフィス系ソフト
- CSV形式のファイル名をCSVの先頭に入れる方法
EXCEL CSV形式のファイル名をCSVファイルの先頭に入れるたいのですが,EXCELのマクロやBVなどで簡単にできるよい方法はないでしょうか。 例えば, ファイル名: 123_001.csv 123_001.csvの内容: 氏名,年齢 山田,25歳 ↓ の123_001.csvを コード,氏名,年齢 123_001,山田太郎,25歳 というデータにしたいのです。 できれば,フォルダ内に保存されているCSVファイルを一括で処理したいのですが...。 例) 123_001.csvの内容: 氏名,年齢 山田,25歳 123_002.csvの内容: 氏名,年齢 吉田,30歳 123_003.csvの内容: 氏名,年齢 鈴木,50歳 ↓ 123_001.csvの内容: コード,氏名,年齢 123_001,山田,25歳 123_002.csvの内容: コード,氏名,年齢 123_002,吉田,30歳 123_003.csvの内容: コード,氏名,年齢 123_003鈴木,50歳 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- エクセルのCSVエクスポートのコード
エクセルのCSVエクスポートのコードについて知りたいのです。 文字コードは、シフトJIS? テキストは、””囲みになる? 改行コードは、CRなの?CRLFなの? お時間のある方、教えてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセルで住所録を作成中です。
エクセルで住所録を作成中です。 B列に住所が入力されている場合に、その列に記載されている住所が”港区”ならC列に”甲”と表示し、”中野区”なら”乙”と表示するというふうに、住所の中に特定の文字列を含んでいれば、それに対応した特定の文字列を表示する方法を教えて下さい。 例) A B C 鈴木一郎 東京都港区・・・ 甲 田中太郎 東京都中野区・・・ 乙 山田花子 東京都千代田区・・・ 丙
- 締切済み
- その他(業務ソフトウェア)
- エクセルで縦並びのデータを横1本にしたい
楽天RMS等でよくあるデータの形ですが下記の様なデータを横並びにまとめたいと考えています。 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 すごい石鹸A 1個 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 ミラクルシャンプー 1個 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 ミラクルリンス 2個 何か良い手はありませんでしょうか。 こんなイメージです。 ↓ 150-0001 東京都渋谷区神宮前番地 山田ビル1F 山田太郎 00-0000-0000 すごい石鹸A 1個 ミラクルシャンプー 1個 ミラクルリンス 2個 よろしくお願い致します。
- ベストアンサー
- SE・インフラ・Webエンジニア
- エクセルのマクロ 【】の中だけ抽出〒と住所を分ける
あるデータからコピペしてエクセルに並べ替えたいのですが 例えば 山田 太郎【やまだ たろう】 〒123-4567 東京都~ というデータをエクセルにペーストしました。 A2のセルには 山田 太郎【やまだ たろう】 A3のセルには 〒123-4567 東京都~ が入力されたとします。 それを B1とC1には 山田 太郎 D1には やまだ たろう E1には 123-4567 F1には 東京都~ を入れたいのですがマクロで出来る方法を教えて下さい。
- ベストアンサー
- Excel(エクセル)
- CSVをExcel2007に取り込む方法について
CSVファイルをエクセルに取り込みたいと思います。 CSVファイルはカンマでデータを区切っています。 ただ、カンマで区切られたデータの中に、改行コードが含まれている場合があります。 エクセルで、このCSVデータを読み込む場合、セルの中で2行目以降はとぎれてしまいます。 そこで、下記のサイトで、「引用符で囲まれた改行を無視」というエクセルの 機能があることを知りましたが、Excel2007にはこの機能はないのでしょうか? https://tsukaeru-excel.com/line-feed-code-csv-powerquery 最近のバージョンのExcelには標準でそなわっているようです。
- 締切済み
- Excel(エクセル)