概要
文字コード:UTF-8(BOMなし)、改行コード:LF、区切り文字:タブのテキストをエクセルファイルに文字化けさせずにインポートする
前提条件
・エクセルの「開発」タブでVBAコード作成できること
・多少VBAわかること
・インポートするファイルはご自身で作成下さい
サンプルテキスト(タブ区切り)
サンプルコード(タブ区切り)
Sub utf8import()
Dim ws As Worksheet
Dim qtbl As QueryTable
Dim getfilepath As String
Set ws = ActiveSheet
getfilepath = Application.GetOpenFilename("ブック, *.txt") ' .txtファイルを選ぶ
If getfilepath <> "False" Then
Else
MsgBox "キャンセル"
End
End If
Set qtbl = ws.QueryTables.Add(Connection:="TEXT;" & getfilepath, Destination:=ws.Range("A1")) ' CSV を開く
With qtbl
.TextFilePlatform = 65001 ' 文字コード UTF-8
.TextFileTabDelimiter = True ' タブ区切り
.RefreshStyle = xlOverwriteCells ' 上書き
.Refresh ' 表示する
.Delete ' CSV接続 解除
End With
End Sub
サンプルコード 実行結果
【補足】サンプルコード(カンマ区切り)
Sub utf8importcsv()
Dim ws As Worksheet
Dim qtbl As QueryTable
Dim getfilepath As String
Set ws = ActiveSheet
getfilepath = Application.GetOpenFilename("ブック, *.csv") ' .csvファイルを選ぶ
If getfilepath <> "False" Then
Else
MsgBox "キャンセル"
End
End If
Set qtbl = ws.QueryTables.Add(Connection:="TEXT;" & getfilepath, Destination:=ws.Range("A1")) ' CSV を開く
With qtbl
.TextFilePlatform = 65001 ' 文字コード UTF-8
.TextFileCommaDelimiter = True ' カンマ区切り
.RefreshStyle = xlOverwriteCells ' 上書き
.Refresh ' 表示する
.Delete ' CSV接続 解除
End With
End Sub
※getfilepath とTextFileCommaDelimiter が変わるだけ
エクセルにある値をUTF-8(BOMなし)改行コードLFに出力する場合
コチラのUTF-8(BOMなし)改行コードLFのテキストVBAで出力するの記事を参照下さい。
参考リンク
VBA CSV ファイルの読み込み (QueryTables.Add 関数を使う)
ありがとうございます
コメント