• 締切済み

UTF-8のCSVファイルを開く

エクセル2000でUTF-8の文字コードで作られたCSVファイルを開くと 文字化けしてしまいます。  文字化けせずに開く方法を御存知の方、教えてください。  VBAを使う方法でも構いません。(コードを教えてください。) 宜しくお願いします。 以上

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

メモ帳や、テキストエディターで変換してから読み込むという解もある様ですが、自分でも使う事があるかもと思ってやってみました。ADODB.Streamで検索すると、情報は多数ヒットします。 ・WEB検索して、ちょこちょこと合成したコードなので、安定動作は?です。 ・メモリーに全部読み込んで処理しているので、巨大なCSVだとエラーになるでしょう。その場合は、一行ずつ読み込んで処理する様にする必要があります。 ・改行はCrLfと、Lfに対応しているつもりです。 Sub read_UTF8_CSV() Dim myStream As Object Dim buf As String, buf2 As Variant, buf3 As Variant, buf4() As Variant Dim i As Long, j As Long Const adReadAll As Long = -1 Const adtypetext As Long = 2 Set myStream = CreateObject("ADODB.Stream") With myStream .Type = adtypetext .Charset = "UTF-8" .Open .LoadFromFile (ThisWorkbook.Path & "\test.csv") buf = .ReadText(adReadAll) .Close End With Set myStream = Nothing buf2 = Split(buf, vbCrLf) If UBound(buf2) = 0 Then buf2 = Split(buf, vbLf) If UBound(buf2) = 0 Then Exit Sub End If ReDim buf4(1 To UBound(buf2) + 1, 1 To UBound(Split(buf2(0), ",")) + 1) For i = 0 To UBound(buf2) buf3 = Split(buf2(i), ",") For j = 0 To UBound(buf3) buf4(i + 1, j + 1) = buf3(j) Next j Next i Range("a1").Resize(UBound(buf4, 1), UBound(buf4, 2)) = buf4 End Sub

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.1

こんにちは。 過去に回答をした中に類似する案件があります。 --------------------- CSVデータがEUC-JPで文字化けしてしまう。 質問番号:5511095 --------------------- この番号をページ↑で検索して見てください。 この回答で載せているフリーソフトはUTF-8による文字化けも対応しています。

B_BOSS
質問者

お礼

有難うございました

関連するQ&A