質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

6581閲覧

Excel QueryTable上のデータの特定文字列をVBAで置換してから出力したい

tololo_dancer

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2019/01/28 06:46

編集2019/01/28 07:54

前提・実現したいこと

エクセルの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上のデータを操作する方法に関して、もしお伺いできると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2019/01/28 08:32

うまく取り込めない改行入りのcsvデータを提示してもらえますか。 csvでは、""で囲まれた中での改行以外の改行はレコード区切りと判断しますので、csvのフォーマットに沿っていないデータなら、自前のコードで読み込むしかないです。
tololo_dancer

2019/01/29 10:13

hatena19様お返事いただきありがとうございます!csvデータは""で囲まれてる中に改行コードが記載されています。サンプルは以下のようなデータになります。(見出し行と2行のレコードですが、1レコード目の4項目に改行が入っていて、読み込むとレコードがずれてしまいます) ▽CSVサンプル "項目1","項目2","項目3","項目4","項目5" "テスト太郎","999-99999-999","商品名称テキスト","午前中の配達時間でお願いします。 テキストテキスト テキスト","2019/01/29" "テスト太郎01","999-99999-998","商品名称テキスト","備考テキスト","2019/01/29"
hatena19

2019/01/29 10:48

このcsvサンプルを質問の方に追記してください。 後から見る人はこの追記依頼までは見ないので。
guest

回答1

0

ベストアンサー

提示のcsvデータで実験してみると、
QueryTables.Add だと、おっしゃる通り改行で別レコードになりますね。
QueryTablesではセル内改行に対応していないということかな。
探してみても設定できそうなところは見つけられませんでした。

ADOを使って読み込んでみたら、セル内改行があっても正常に読み込めました。
下記を参考にしてください。

ADOを使って、CSVファイルを読み込む - VBA - TIL

投稿2019/01/29 10:46

hatena19

総合スコア34064

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問