• 締切済み

VBAでUTF-8文字を読込、Excelに出力する方法

タイトルの通りです。 簡単なプログラムを作ってみました。 このような事は出来ないのでしょうか。 教えてください。 宜しくお願いします。 ☆サンプルプログラム☆    ↓ Sub test() Dim Stm As Object Dim sText As String Const adCRLF = -1 Const adReadAll = -1 Const adTypeText = 1 sText = "あああ" Set Stm = CreateObject("ADODB.Stream") Stm.Open Stm.Charset = "UTF-8" Stm.WriteText sText ActiveSheet.Range("A1").Value = Stm.ReadText() Stm.Close Set Stm = Nothing End Sub

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 UTF-8 で書かれたテキストファイルの文字列を読み込んでコードを 試してみましたが、そのまま動きましたね、、意図は何ですか? Excel2000 以上なら Unicode 対応してますので、Excel内部でのみの 処理なら特に問題はないと思います。理由があって別のキャラセット に変換するならもう一つ ADOBE.Stream を CreateObject し、そちら の Charset を変換したいキャラセットに設定してから、WriteText するなり、CopyTo すればいいです。 こんな感じ。 Sub CONVERT_CHARSET()      '参照設定するなら:Microsoft ActiveX Data Objects x.x Library   Dim SRC As Object   Dim DST As Object   Dim strFILEPATH As String      Const adTypeText = 2        strFILEPATH = Application.GetOpenFilename("TEXTファイル (*.txt), *.txt")   If UCase$(strFILEPATH) = "FALSE" Then Exit Sub   Set SRC = CreateObject("ADODB.Stream")   With SRC     .Open     .Charset = "UTF-8"     .Type = adTypeText     .LoadFromFile strFILEPATH     .Position = 0   End With   Set DST = CreateObject("ADODB.Stream")   With DST     .Open     .Charset = "Shift_JIS"     .Type = adTypeText   End With   SRC.CopyTo DST   DST.Position = 0      ActiveSheet.Range("A1").Value = DST.ReadText()      SRC.Close   DST.Close   Set SRC = Nothing   Set DST = Nothing End Sub

関連するQ&A