前提・実現したいこと
エクセルのVBAでCSVデータを取り込み、特定のシートに出力する処理をしています。大量のCSVデータを高速で出力できると聞いて、QueryTableに取り込んでからrefreshで出力しています。
発生している問題・エラーメッセージ
動作自体は問題ないのですが、CSVデータの特定のセルの中に改行が含まれているとその行のデータが改行含むセル以降ずれてしまう、という不具合が発生してしまっております。
予め業務担当者にCSVデータを置換してもらえばいいのですが、あまり運用者に手間をかけさせたくなく、できればVBA上でquerytableに取り込んだデータ内の改行データを簡易に置換したいと思っております。
試したこと
・改行が入る行が決まっている列なので、その列を取り込まないようにできないかためしました。ただ、以前改行の影響が出てしまっています。(.TextFileColumnDataTypesで9を指定)
With queryTb .TextFilePlatform = 932 .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .TextFileStartRow = 2 .RefreshStyle = xlOverwriteCells .TextFileColumnDataTypes = Array(2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 2, 2, 5) .Refresh .Delete End With
・色々レファレンスを見ていると、OPENメソッドを用いて1文字1文字検索して改行コードが存在していたら置換する、みたいな処理を見るのですが、ちょっと手間そうなので、できればQueryTabelに入っているデータを直接置換したいと思っております。
お伺いしたいこと
QueryTable上のデータを操作する方法に関して、もしお伺いできると嬉しいです。
うまく取り込めない改行入りのcsvデータを提示してもらえますか。
csvでは、""で囲まれた中での改行以外の改行はレコード区切りと判断しますので、csvのフォーマットに沿っていないデータなら、自前のコードで読み込むしかないです。
hatena19様お返事いただきありがとうございます!csvデータは""で囲まれてる中に改行コードが記載されています。サンプルは以下のようなデータになります。(見出し行と2行のレコードですが、1レコード目の4項目に改行が入っていて、読み込むとレコードがずれてしまいます)
▽CSVサンプル
"項目1","項目2","項目3","項目4","項目5"
"テスト太郎","999-99999-999","商品名称テキスト","午前中の配達時間でお願いします。
テキストテキスト
テキスト","2019/01/29"
"テスト太郎01","999-99999-998","商品名称テキスト","備考テキスト","2019/01/29"
このcsvサンプルを質問の方に追記してください。
後から見る人はこの追記依頼までは見ないので。
回答1件
あなたの回答
tips
プレビュー