Sub Sample2()
Dim buf As String, Target As String, i As Long
Dim tmp1 As Variant, tmp2 As Variant, j As Long
Target = "D:\Work\UTF-8のテキスト.csv"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile Target
buf = .ReadText
.Close
tmp1 = Split(buf, ”,")
End With
End Sub
Office TANAKAが掲載している"ADODB Stream"オブジェクトを使用して読み込んだデータを変数bufに格納するところまでは出来ましたが、その後、Accessの「T_サンプル」テーブルのフィールド[商品ID]、[商品受取者]、[数量]のデータ最終行に、変数bufに格納されたデータを転記するコードがわかりません。
お手数ですが、ご教示頂けたら幸いです。
よろしくお願いします。
最終目的は、UTF-8のCSVファイルをAccessのテーブルにインポートしたいということでしょうか。
だとしたら、そんな面倒なことせずに、下記の1行でできますが、それではだめですか。
最後の 65001 が文字コードを UTF-8 と指定してます。
その他の文字コードに関しては下記を参照に。
コード ページ識別子 - Win32 apps | Microsoft Learn
上記の方法でだめなのなら、その理由を説明してもらえますか。
回答ありがとうございます。
言葉足らずの説明で大変申し訳ありません。
CSVファイルは、1行目が空白行、2行目が項目(データあり)、3行目からデータな形式になっており、実際にデータとして取得したいのは、3行目以降となります。
もし、回答頂いたコードで実現できるとしたら、どのようなコードになりますでしょうか?
もちろん、別の方法でも構いません。
ご教示よろしくお願いします。
そのようなファイルはCSVファイルとは言えません。
どのような経緯で入手したものか分かりませんが、入手先にCSVの仕様にそった形式にできないかまずは確認してみましょう。
それが不可能なら、
2行目以降はCSVの仕様に沿っているなら、1行目を削除して上書保存して、それを前回の回答の方法でインポートするとシンプルかつ高速に処理できると思います。
テキストファイルへの書き込み方法はOffice TANAKAさんのサイトにあります。
Office TANAKA - ファイルの操作[UTF-8形式のテキストファイルに書き込む]
1行目の削除は下記のコードでできます。
別案( Windows標準のpowershellワンライナーをVBAから実行 )をご紹介します
・ UTF8のテキストファイルを読み書き
・ テキストファイルの先頭X行を読み飛ばす
の両立に関しては、ADODB.Streamの利用より記述が簡潔になります