• 締切済み

エクセルVBAでのCSV取り込みについて

CSVの取り込み部分を作っていて、ほぼOKの状態にはなっているのですが 取り込む際にカンマを基準にデータを区分けしている為、金額の部分にカンマが入っていると、金額が分割したデータとして扱われてしまいます これをうまく解消する方法はないでしょうか? よろしくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

CSVの場合、カンマを含むデータは「”(ダブルクォート)」で囲う事になっていますが、取り込み対象のCSVはそのようになっていますか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

ありません。 あるとすると、特定の列まで処理したら、次の列とその次の列は1列として処理するとか、 そういうCSV定義から逸脱したロジックをごりごり組むことでしょう。 定義の問題ですので、それを解消させなければ話になりません。 通常、そういう場面では、以下のいずれかでインターフェースを定義します。  ・金額欄に3桁区切りのカンマを設けない。  ・数値、文字列に関わらず、値をダブルクォーテーションで括る。  ・カンマ区切りをやめ、タブ区切りにする。 共通して必須なことは、  そういうインターフェースを遵守すること。 で、 それぞれデメリットは、  ・なし。  ・ダブルクォーテーションを値として使用不可。  ・タブ文字を値として使用不可。 です。 前者の問題は、元CSVが固定で3桁区切りで取得される場合、いちいち区切り文字を除去しなければならない点。 取り込み自体は、Excelならほぼ問題ないでしょう。 カンマ区切りにしたいなら、セルの書式設定で済みますから。 後者は、ダブルクォーテーションを値として

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・

  • EXCELのCSV取り込み

    お世話になります。 EXCELのCSV取り込みで悩んでおります。 生データ date=2018-04-13 time=16:00 type=ok country="japan" date=2018-04-13 time=16:10 type=ok country="united states" date=2018-04-13 time=16:20 type=ng country="china" こういうタイプのデータをCSVで取り込む際に、 区切り文字をスペースで取り込むと、 united とstates が別のセルになってしまい思うようになりませんでした。 理想の形としては、項目ごとに date time type country 2018-04-13 16:00 ok "japan" 2018-04-13 16:10 ok"united states" 2018-04-13 16:20 ng "china" このように、項目毎イコール以下という形で取り込みたいのですが、 良い方法はないでしょうか。 最悪””でくくられている部分は分割しないというスペース区切りのセルわけでもいいのですが…。 お力添えお願いいたします。

  • ExcelのVBAでCSVを読み込むと通貨になる

    Excel2010のVBAでCSVファイルを読み込んで処理させたいのですが、読み込んだデータをExcelが勝手に別のデータに変えてしまうので困っています。 例えば、123,456というデータは、フィールドにカンマがあるので、CSVでは"123,456"となりますが、これを以下のようなVBAのコードで読み込ませると、書式が通貨として扱われてしまって、データも123456になってしまいます。文字列として読み込まれていれば正しいデータとして読み込まれるように思うのですが、文字列として読み込ませる方法が分かりません。正しく元のデータ123,456のまま読み込ませるにはどうすればいいのでしょうか。 なお、CSVの各フィールドにカンマやダブルクォーテーションが混在していると、各フィールドに分割する処理が複雑でよく分からないので、下記のコードのようにExcelの機能でCSVを各フィールドに分割される方法で読み込ませたいです。 よろしくお願いします。 Workbooks.Open Filename:= "file.csv"

  • EXCEL csvの取り込み

    おそらく基本的なことなのかもしれませんが、うまく検索できなかったので質問させてください。 いまやりたいことは、 1:自分で表のテンプレートファイルを作って、 2:そのテンプレートのデータを表示したい領域にCSVファイルからデータを取り込む なのですが、今のところこのような形で行っています。 (テンプレートとなる表の枠組みは作成済み) 1:CSVファイルをexcelで開く. 2:範囲を選択してコピー 3:テンプレート中のデータを表示したい領域の一番左上のセルに「形式を選択して貼り付け(値)」 この方法で一応できるのですが、何分面倒です。 それで 「データ > 外部データの取り込み > データの取り込み」 で行うと, 先ほどよりは楽にcsvファイルからデータを 貼り付けられるのですが,今度はセルの幅が変わってしまいます(空間が切り詰められる) こういった場合はどのように操作すればよいのでしょうか。 アドバイスをお願いします。

  • 【Excel】csvファイル取込み VBA処理

      VBAの初心者です。 csvファイル(カンマ区切り)の取込みをVBAで処理したいのですが、知識がないので 何方か詳しい方ご教授下さい。 動作的には以下のように処理したいと思ってます。 1. sheet1のボタンからテキストのインポート   任意のフォルダ(c:\data\i_data)からカンマ区切りで保存されたcsvファイル群から   選んで読込み。   読込むファイルに間違いがないか対話型で確認のメッセージを表示し、キャンセ   ルした場合は中断させる。 2. csvファイル内の200列分のデータ(指数)をsheet3の任意のセル(指定可能)に取込   み。セルの指定が出来なければ固定でも可ですが、行違いで他のファイルも取込   み出来るようにしたいのです。 色んなサイトからヒントを貰って自分なりに試してますが上手くいかず、行き詰って質 問させて頂いた次第です。 また別のQ&Aに記載されてましたFileSystemObjectが使えません。 お手数ですが、各行毎にコメント(解説)があると有難いです。 Excelのバージョンは"2007"ですが"2000"でも使えるようにしたいのですが・・ よろしくお願いします。

  • エクセルのCSV取り込み、加工について

    こんばんは。 エクセルファイルの特定のシート(仮にsheet1としましょう)に任意名のCSVファイル外部データの取り込み→テキストファイルウィザード取り込み (取り込む形はカンマ区切り、全ての列が文字列、一部の列を削除で) その後にsheet1のある列と同一ファイルの他のシート(sheet2としましょう)のある列をマッチングさせて一致する行だけsheet1一部の列のデータ(E、F、Gのデータとしましょう)からデータをsheet2のE、F、Gにコピーするようなマクロを作る場合どのようなマクロを作るのでしょうか? お願い致します。

  • VBAでエクセルでCSVの文字化けを変換し複数取込

    お世話になっております。 使用環境:OFFICE365 エクセルVBAでフォルダに入っている複数のCSVを結合して取り込みたい。 その際、文字化けの回避もしたい。 C:\Users\ユーザー\Desktop\資料\CSV 上記「CSV」の中に複数データがあります。 そのまま開くと文字化けする状態です。 エクセルのシート「取り込み」に上記CSVを結合して取り込みたいです。 どうかご教示お願いいたします。

  • EXCELにcsv形式の外部データを取り込む際にカンマ区切りで取り込も

    EXCELにcsv形式の外部データを取り込む際にカンマ区切りで取り込もうとした場合、csvデータの同一セル内に改行データがあると、ずれて表示されてしまいます。 改行を取り除くのはclean関数があることは知っていますが、マクロを利用して、EXCELのデータ→外部データの取り込みの選択だけで取り込む方法はないでしょうか?ご教示ください。

  • 困っています!! ExcelをCSVファイルにしたあと。

    ご存知の方にとっては恥ずかしいくらいの質問かもしれませんが、どうか教えて下さい! win xp、Office2000を使用しています。 Excelでデータの編集が終わったあとに、ファイル形式をCSVで保存するよう言われ、入力後に「ファイルの名前を付けて保存」→ファイルの種類で「CSV」を選択して保存を致しました。 その際、ファイル名は「英小文字のみ.csv」にしています。 保存後、確認の為に再度そのファイルを開いたところ、 1、文字幅に合わせて大きさを変えた列幅が基準値に戻ってしまっている。 2、「文字列」を使用して、ゼロから始まる数字を打ち込んだ列がゼロを表示しない(01>1)、数字を全角で打ち込んでいるのに半角に戻ってしまう(15>15)。 という状態になってしまいます。 テキストエディタで確認したところ、きちんとカンマで区切られてはいるのですが、上記の2に関しては、半角になったままだったりと、入力した状態での表示ではありませんでした。 保存する際に、 「英小文字のみ.csv」はCSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。 というメッセージが出ます。 Excelに関しては、まったくといっていいほど初心者です。苦手で逃げていた自分が悪いのですが…。 今回CSVというファイル形式も初めて知りました…。 NETで調べたりしてみたのですが、どうしてもわかりません。 CSVにしたあとに、通常1のようになってしまうものなのでしょうか? また、入力したままの状態が表示されるようにするには、どうしたらよいのでしょうか? ご存知の方がいらっしゃいましたら、ぜひお知恵を貸してください! よろしくお願い致します!

  • エクセル マクロでのエクセルファイル取込について

    エクセルで別のエクセルファイルをマクロで取込み、取込したデータを自動で任意の場所にデータが入力されるようなものを作りたいと考えています。 csvデータの取込は作ることが出来たのですが、エクセルファイルをcsvデータのように取込することは出来ないでしょうか? 出来ないとしたら、取込したいエクセルファイルを一度csvで保存してからcsvとして取込するというやり方で対応するしかないでしょうか? 出来れば、取込したいエクセルファイルのシートが複数にわかれていて、全シートの情報を取込したいと考えているので、エクセルのままで全シート取り込めれば・・と思います。 何か上記の方法でなくとも、最善の方法(一番工数が少なく済む方法)があれば教えていただきたいです。 よろしくお願いします。

このQ&Aのポイント
  • ExcelVBAを使用してデータ抽出を行う方法について解説します。
  • 具体的な手順としては、マクロを記録してTRーAを抽出した後、B371を選択します。
  • また、本記事ではデータ抽出の詳細な手順を記載しているチャプター5のURLも提供しています。
回答を見る