CSVファイルをExcelに読み込む方法

このQ&Aのポイント
  • VBAを使用して、CSVファイルをExcelのワークシートに読み込む方法を教えてください。
  • ワークシートにCSVファイルのデータを分割して振り分ける方法も教えてください。
  • 最後の番号8桁にスペースが入っているかどうかによって処理方法が異なるようです。
回答を見る
  • ベストアンサー

CSVのファイルをExcelに読み込むには?

VBA初心者です。 CSVのファイルをExcelのワークシートに読み込むコードを VBAで書きたいのですが、イマイチやり方が良く分かりません。 読み込むデータはこのような物です。 20120322C9555033044055 0222566547商品名A 888 52 20120323D9536066108125 3265842386商品名B 12547411 … (年月日8桁+番号5桁+数A3桁+数B3桁+数C3桁 番号10桁+商品名10桁 番号8桁) これを上のように分割して列に振り分けて、2行目以降は行を加算して 下に続くような形にしたいのですが、どうしたらよいでしょうか? 途中まではスペースで区切られているのですが、最後の"番号8桁"のところで 間にスペースが入っている物と入っていないものがあり苦戦しています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

項目分割以外はできていると仮定します。 商品名は全角5文字 取得データを変数getlineに格納 --- 1.最後以外は固定長なのでMidで分割する a = mid(getline, 1, 22) b = mid(getline, 24, 15) c = mid(getline, 40) 2.splitで分割し最後の項目を連結する ary = split(getline, " ") a = ary(0) b = ary(1) if ubound(ary) = 2 then c = ary(2) else c = ary(2) + ary(3) endif

tickletickle
質問者

お礼

ありがとうございます。 分割してからくっつけるのですか! 何とか頑張ってやってみます!

関連するQ&A

  • 【Excel】 csvファイルを参照し、該当データを表示したい。

    こんにちは csvファイル(商品リスト.csv)に商品リストがあります。 コード 商品名   金額 b32548 あいうえお 10,000 a45687 さしすせそ 20,000 c54842 あいうえお 10,000 ・ ・ 別のExcelファイルのsheet1 A列にコード番号が表示されています。  A   B     C コード 商品名   金額 a45687 c54842 b32548 このB列、C列に、先のcsvファイルの 該当コードにあたる商品名、金額を表示させるには B列、C列の式はどうしたら良いのでしょうか。 完成  A   B     C コード 商品名   金額 a45687 さしすせそ 20,000 c54842 あいうえお 10,000 b32548 あいうえお 10,000 宜しくお願いいたします。

  • エクセルでCSVファイルを一括読込できますか?

    エクセルの質問です。あるフォルダにa0801.csv,a0802.csv,a0803.csv・・・,b0801.csv,b0802.csv,b0803.csv・・・,c0801.csv,c0802.csv,c0803.csv・・・ があります。頭が『b』のファイルを一括で取り込みたいのですが出来ますか?ファイル名にある0801は日付となっています。教えてください。よろしくお願い致します。

  • EXCELでCSVファイルの読込み

    VBA超初心者でとても困っています。 仕事でEXCELのVBAを使って 現在開いているシートの中に 1つのCSVファイルからデータを読み込むのですが CSVデータの2行目をEXCELのC2へ。 4~10行目までを、EXCELのB5~B14へ マクロを使い、ボタン一つで自動入力させたいのです・・・。 Line Input も、やり方が悪いのかうまくいきません。 ヒントとなるやり方があればぜひ教えてください。

  • EXCEL- VBA(CSVファイル→インポート)

    A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】   ◆ファイル名「*.CSV」*は文字数それぞれ違います。   <例:tanaka.xls だったり 09福島.xls>  ◆入っているドライブ   TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習  ◆A~F列にデータが入っている 【やりたいこと】    (1)A~F列はカンマ区切りで全て文字列としたい  (2)元のファイル名でエクセルとして保存したい「*.XLS」

  • エクセルの関数(数字の桁数合わせ)

    商品マスターのCSVをエクセルに取り込んで編集しているのですが、商品番号の桁数で困ってます。 ◇CSVファイル(例) 商品番号,商品名 00001,商品A 00030,商品B 01066,商品C 31054,商品D これをエクセルに取り込むと以下のようになります。 1,商品A 30,商品B 1066,商品C 31054,商品D 数字の場合は頭の"0"が勝手に削除されてしまいます。 取り込んだ後にセルを「文字列」に変更しても時すでに遅し・・・消えた"0"は戻りません。 そこで頭の0を自動的に付加したいのですが、そのような関数はあるでしょうか? ⇒商品番号は5桁固定です。

  • ExcelへのCSVファイルの取り込み

    当方のExcelの環境は、Excel 2003/2007/2010 が混在しています。 CSVファイルをExcelに取り込んだ際、各セルへ下記のような当方の意図した形式で取り込む方法をご教示頂きたくお願い致します。 下記のようなダブルクォーテーション( " )で囲まれたカンマ( , )区切りのCSVファイルがあるとします。 ※[改行]の部分は、実際には改行コードが入っています。 ※[スペース]の部分は、実際には半角/全角スペースのいずれかが入っています。 "登録番号","登録名","登録内容","部署コード" "0001","山田一郎","・テスト[改行][スペース][スペース]ホゲホゲ,"01" "1002","鈴木次郎","・テスト2","10" "0102","佐藤三郎","","10" このファイルをExcelで開くと、A1~D4の各セルに下記の内容で表示されます。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:1 B2セル:山田一郎 C2セル:・テスト       ホゲホゲ D2セル:1 A3セル:1002 B3セル:鈴木次郎 C3セル:・テスト2 D3セル:10 A4セル:102 B4セル:佐藤三郎 C4セル: D4セル:10 =========== これを下記のようにA2やD2、A4セルの数字部をデータ通りに表示したいです。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:0001 B2セル:山田一郎 C2セル:・テスト       ホゲホゲ D2セル:01 A3セル:1002 B3セル:鈴木次郎 C3セル:・テスト2 D3セル:10 A4セル:0102 B4セル:佐藤三郎 C4セル: D4セル:10 =========== データの取り込みにて区切り文字を"カンマ"にして、A列やD列を"文字列"として読み込む事を考えましたが、「登録内容」の部分に改行が入っている為、下記のように改行後の文字列がA列に入ってしまい、意図した内容での表示が出来ません。 =========== A1セル:登録番号 B1セル:登録名 C1セル:登録内容 D1セル:部署コード A2セル:0001 B2セル:山田一郎 C2セル:・テスト D2セル: A3セル: ホゲホゲ" B3セル:1 C3セル: D3セル: A4セル:1002 B4セル:鈴木次郎 C4セル:・テスト2 D4セル:10 A5セル:0102 B5セル:佐藤三郎 C5セル: D5セル:10 =========== A列、D列は文字列の状態で読み込みつつ、C列の改行は当該セル内で実行する方法をご教示頂きたくお願い致します。

  • CSVファイルの指定部分をエクセルに取り込みたい

    複数のCSVファイルをエクセルに、VBAを使用して取り込みます。 CSVファイルの形式は決まっているのですが、キーワード行から指定行分のみを取り込みたいです。 データ形式は、 A1 aaa bbb ccc B1 aaa bbb ccc C1 aaa bbb ccc A1 a1a b1b c1c  :  : という感じで、キーワードA1行以下から次のキーワードより上のデータをエクセルに取り込みたいです。 どうぞよろしくお願いいたします。

  • 複数CSVファイルをExcel形式1つにまとめたい

    VBA初心者です。 似たような質問・回答がありますが、どうも私の意図するところと異なるので、 新たに質問させていただきます。 どうぞお願いします。 仕事場で、基本1日1ファイル取得している複数のCSVファイルを、 1週間に一度Excelファイルに一週間分のデータを追加し、 最終的には1か月毎に1つのExceファイル(1シート)に集計してます。 全ファイルとも内容は同じで、1シートで作成されており、 タイトル行は1行目、2行目以降データ(行:データ数はファイル毎に異なる)、 列数はA-IV列といった構成になります。 新しい1つのファイルにまとめる際には、 B列とG列のみ抽出し、一行目にタイトル行、2行目からデータ、 最終行に次のファイルのデータと、いうように複数のファイルのデータをつなげて 1つのファイルにしたいのです。 ちなみに出来上がったExcelファイルとしては、 A列に元CSVファイルのB列データ、C列に元CSVファイルのG列データ、 B列に各データがどのCSVファイルの物か分かるように、 各ファイル名の日付にあたる後ろ部分を表示させたいのです。 ファイル名から日付を拾えない場合は、 ファイルをまとめる前に、列を挿入し、 C列にデータ日付の項目を作り、そこに日付を入力し、 まとめる際に、B・C列+G列を抽出、といった形で、まとめられたらと思ってます。 *各Exceファイルのタイトルの後部分がデータの日付を表す (タイトル例:0803abcde2013_08_03.xls) B列2行目以降に、それぞれ抽出したデータのファイル名から、 日付にあたる部分を書き出し(8月3日と言ったように)表示させたい。 場合によっては、前部分を抽出するパターンもあるので、そちらもお願いします。 *今後、他の何種類かの複数CSVファイルでもファイル毎に (こちらも全ファイルとも内容は同じ)同様に1カ月毎にまとめたいので、 違う条件でも抽出できるように、応用できたらと、考えております。 (抽出する列がB列とI列のみ、A~C列+F列など) VBAで作業したいと考えてます。色々とお手数ですが、よろしくお願いします。 また、他にお勧めのサイトや、参考になる質問がありましたら、 合わせて、教えていただけると幸いです。

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。

  • VBA でCSV集計

    VBAをはじめて1ヶ月のものです。 VBAの集計ツールを作成していますが 思うようにいかず、お知恵をお借りしたいと考えています。     abcというフォルダ配下に以下のように4桁の日付を示す フォルダが日付毎にあります。(いくつあるかはわかりません。) さらにその配下にいくつかのcsvファイルがおいてありますが aaa.csvというcsvのみ抽出し 最終的には合体.csvのような集計CSVを作成したいと考えています。 以上よろしくお願いいたします。 (1) abc → 0812フォルダ <aaa.csv>     A列     B列    C列 1行 100     200    8月12日                       2行 100     100 3行 200     200 4行 300     100 5行 100     100 6行 200     200 7行 400     100 8行 100     100 (2)abc → 0813フォルダ <aaa.csv>      A列     B列     C列 1行   0      300    8月13日              2行 100      100 3行 100      200 4行 100      200 5行 100      200 6行 300      200 7行 300      400 8行 200      100 ↓ (3)<合体.csv>     A列     B列      C列     D列     E列     F列     G列    (日付)  (A1~A4計)(A5~A8計)(合体B+C)(B1~B4計)(B5~B8計)(合体E+F) 1行 8月12日   700      800     1500     600     500     1100 2行 8月13日   300      900     1200     800     900     1700

専門家に質問してみよう