あるデータベースから出力したCSV形式のデータがあるのですが、
文字コードがUTF-8なので、直接Excelで開くと文字化けがあります。
なので、一度出力したcsvファイルの拡張子をtxtに変えて、
それをExcelから開くという作業をして対応しています。
(そうすると文字コードが選択できるので)
しかしcsvをtxtに変えてExcelで開くと、
思いもよらぬところで改行されてしまい、
正しくデータが表示されません。
例)csvでそのまま開いたとき
ユーザーコード 苗字 名前 住所
001 山田 太郎 東京都大田区鵜の木 1-2-3
002 高橋 愛子 東京都港区六本木2-3-4
↓ txtに変換したのちにexcelで開いたとき
ユーザーコード 苗字 名前 住所
001 山田 太郎 東京都大田区鵜の木
1-2-3 ←余計な改行が発生
002 高橋 愛子 東京都港区六本木2-3-4
これを回避するために、一度csvで開いて、
セル内改行コードを空白と置き換えるという作業をしたのですが、
それでも上記のような改行が発生してしまっています。
UTF-8のcsvを文字化けなくExcelで開く方法は他にはないでしょうか?
また上記方法の改善点はありますでしょうか?
ご助言宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
もう読んでないかもしれませんが、、、
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
No.1
- 回答日時:
直接の回答ではないのですが……。
もしも、文字コードを変更しても良いのであれば、
http://www.vector.co.jp/soft/dl/win95/util/se326 …
というようなソフトで、shift-jis に変換してしまえばいいかと思います。
UTF-8 のまま編集する必要があるのなら(編集の規模にもよりますが)EmEditor というエディタをお勧めします。
http://jp.emeditor.com/
ちょっと高いですが(といっても、4,200円ですが)UTF-8 の、CSV ファイルを表示する・編集をするためには、十分な機能を持っています。
(UTF-8 を含む ユニコード対応と、csv 編集モードつき)
元々がエディタですので、文字の編集や検索・置換は得意ですし、csv で分離されたひとつの項目であれば、一括削除や、それをキーにしたソートも可能です。
早々のご回答ありがとうございます!
UTF-8のまま編集できるソフトがあるんですね。
ちょっと体験版を試してみたいと思います!
ただUTF-8のデータをほぼ参照するだけなので
(海外の登録者の名前などを見る)
有償ソフトを使うほどでもないかなぁ。。
でも奥の手はこちらのソフトを使用したいと思います。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
伊藤理佐さんの最初の旦那さんは?
-
へらちょんぺ
-
「びっくり!くりくりくりっく...
-
ロバートの秋山さんの芸が気持...
-
ハーバルエッセンスのCM(yes...
-
お笑い芸人がよく言う『営業』...
-
ガンダムのOS
-
昔の吉本新喜劇で笑いながら首...
-
人 家 員 者 の意味用法を...
-
ハリーポッターの感想を投稿したい
-
チョコボールのキョロちゃんの...
-
ジャルジャルのこのネタの意味...
-
フワちゃんがここから好感度爆...
-
お茶の間から消えた芸能人。
-
昨日のリンカーンでさまーずの...
-
中川家のお兄ちゃん(剛)は・・・
-
form1 hotkey closing
-
友達の相談で、 男性後輩とのLI...
-
キラとシン
-
吉本若手芸人!!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フワちゃんがここから好感度爆...
-
へらちょんぺ
-
D(E)カップの中学生が半袖の体...
-
彼氏が車をぶつけて修理に20万...
-
「びっくり!くりくりくりっく...
-
ハーバルエッセンスのCM(yes...
-
ロバートの秋山さんの芸が気持...
-
上沼恵美子はあまりに性格悪い...
-
お笑い芸人がよく言う『営業』...
-
元自衛隊芸人やす子
-
YouTubeに比べテレビのタレント...
-
美味しそうじゃなくて美味しいの!
-
昔の吉本新喜劇で笑いながら首...
-
伊藤理佐さんの最初の旦那さんは?
-
人 家 員 者 の意味用法を...
-
form1 hotkey closing
-
タレント
-
エクセル VBA ユーザーフォー...
-
熊本民謡「おてもやん」の歌詞...
-
お茶の間から消えた芸能人。
おすすめ情報