VBA UTF-8のCSV ファイル(タブ区切り、カンマ区切り)の読み込み

Blog
スポンサーリンク

概要

文字コード: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 関数を使う)

ありがとうございます

BlogInfraVBA
スポンサーリンク
インフラエンジニア|パイナップル星人 ブログ

コメント

タイトルとURLをコピーしました