VisualBasicでcsvファイルを読み込む方法

このQ&Aのポイント
  • VisualBasicからcsvファイルを読み込む方法を紹介します。
  • n行2列のcsvファイルとn行3列のcsvファイルを読み込んだ場合、特定のセルに値を代入する方法について説明します。
  • 現在の設定では、n行3列のcsvファイルを読み込んだ場合、特定のセルに正しい値が代入されない問題が発生しています。
回答を見る
  • ベストアンサー

VisualBasicからcsvファイルを読み込む

VisualBasicからcsvファイルを以下のようなプログラムで読み込んでいます。 Open ファイルパス For Input Shared As #1 Do Until EOF(1): Input #1, A(i), B(i): i = i + 1: DoEvents: Loop Close #1 n行2列のcsvファイルとn行3列のcsvファイルを読み込んだ時に A(2)にセルB1、B(2)にセルB2の値を代入したいです。 現状だとn行3列のcsvファイルを読み込んだ時に A(2)にはセルA3の値が入ってしまいます。 n行3列の3列目のデータは無視したいです。

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

  • ベストアンサー
  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.1

vba csv 読み込み でググると多量に事例が出てきますよ。項目数が一定でないcsvを読む時の基本は変数にInputで直読みせず、Variant型の可変配列で受け、Split関数で切り分けるやり方になります。 その一例 http://www.moug.net/tech/exvba/0060086.html

関連するQ&A

  • 複数CSVファイルからデータ抽出

    CSVファイルのA列(行は問いません)の文字が転記シートのA列(行は問いません)と一致していたら、転記シートのA列が一致した行の空白に、左から順にCSVファイルのA列が一致した行のF列の値を書き込む。CSVファイルの1行A列を転記シートのF列の値を書き込んだ列の1行目に書き込む。 できれば、書き込んだ値はCSVファイルから消したいです。 コピペでやっていたのですが、ずれていてどうしようもなくなりました。 CSVファイル一つ当たり、4000行ほどあり、ファイルは200弱あります。 プログラムを組んでくださると、ありがたいのですが。 質問というよりお願いになってしまいますが、よろしくお願いします。

  • CSVファイルの取り込みについて

    CSV取り込み方法について 教えていただきたくお願いいたします。 エクセルのマクロ・VBAの組み方について デスクトップ上の000という名前のCSVファイルを、作業しているエクセルファイルのLoadという名前のシートに貼り付けたいと思っています。 CSVファイルはエクセルで開くと1行に11列の項目が展開されています。 貼り付ける項目はこのようになります。 (CSV) →(エクセルのLoadシート) 1列目(A行)→B行へ 2列目   →C行へ 3列目   →D行へ 4列目   →E行へ 5列目   →F行へ 9列目   →G行へ 10列目  →H行へ 11列目  →I行へ (6.7.8列目は使いません) 最後にLoadのシートのA行に”=B&E”とい式を入力したいと思っています。 まだ初心者なので勉強中なのですが、仕事上急遽必要になりましたのでお願いいたします。

  • マクロCSV出力

    Sheet1に入力されている値をCSVファイルに出力したいと思っております。 但し、特定のセルだけを取得して、1つのファイルに出力したいと思っています。 (1)D2~G2に入力されている値を取得 (2)E4~E10までと、E4~E10の最終列までの値を取得 (3)B11の値を取得 (4)A13~A列の最終行まで、A13~A列の最終行の最終列までの値を取得 (1)、(2)、(3)、(4)の値を取得して、1つのCSVファイルに出力するプログラムを作成したいと思っております。 (1)は1行目に出力 (2)は2行目~8行目に出力 (3)は9行目に出力 (4)は10行目以降に出力 出力の形式は ”TEST”,” ”,”SMP”のようにダブルクォーテーションで値を囲って出力したいと思っています。 値が入っていないセルは” ”,としたいと思っております。 サンプルを作成して頂けないでしょうか。

  • CSVファイルの行と列のセルってどうやって指定するのですか?

    たとえば、1行目の2列目のセルの値を消したい。 2行目の5列目のセルの値に数字の5をいれたい。 って場合、行だったら $FILE=data.csv; open(IN, $FILE); @data=<IN>; close(IN); このときの $data[2]は3行目ですよね? では3行目の3列目はどうやって指定するのでしょうか?たとえば3行目の3列目のセルの数字の5だったのをperlを実行したらセルの中を6に書き換えるのはどうしたらいいのでしょうか?

    • ベストアンサー
    • Perl
  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • エクセルVBAでCSVファイルから取り込みたいのですが・・・

    CSVファイルのデータを取り込むコードを教えていただけないでしょうか。 「共有フォルダ」の中に「作業用.xls」と「090820.csv」があります。csvファイルは日によって名前が変わりますが、必ず一つしか入れないことにしています。 CSVファイルの1行目は見出しです。2行目以降がデータになっています。 A2からI列最終行を「作業用.xls」のsheet1のA6にコピー(取り込み)したいのですが、よろしくお願いします。

  • 外部ファイルから特定の値を取り出して、値ごとに新しいファイルを生成して書き込むには?

    こんにちわ。質問させてください。 ひとつのCSVファイルがあります。1列目の先頭の値はランダムねアルファベットです。 aという値が先頭にある列は、a.csvを生成して、a.csvにaの行を書き込みます。b,cも同様にb.csv,c,csvを生成して書き込みます。 要するに一枚のファイルから値ごとに新しいファイルを生成して書き込みをしたいのです。新しくできたファイルは追加書き込みをしないでの上書きモードです。substr関数を使って値を取り出すまではわかるのですが、そこからの処理がわかりません。どうぞ教えてください。よろしくおねがいします。

    • ベストアンサー
    • Perl
  • C言語、CSVファイルを読み込んで、加工して別CS

    C言語、CSVファイルを読み込んで、加工して別CSVファイルに出力するプログラムがうまくいきません。 行いたいことは A列 B列 ←エクセルの列です。 1   -0.0001 2   -0.000021 3   -0.1111 4   -0.255 5   -0.223 というCSVファイルの中身を加工してB列の数値のみを変えたいのですが、うまくいくません。作成したプログラムでは A列    B列 1 0000 2 0000 3 0000  4 0000 5 0000  となり、うまく数値が読み込めていません。-だからでしょうか。 また全てA列に入力されてしまいます。 以下作成したプログラムになります。 #include <stdio.h> #define N 5 int main(void) { int i; double r[N], w[N - 1]; FILE *fpr = fopen("C:\\Users\\XXX\\Desktop\\aaa.csv", "r"); for (i = 0; i < N; ++i) { fscanf(fpr, "%*d %lf", &r[i]); } fclose(fpr); for (i = 0; i < N - 1; ++i) { if (i == 0) { w[0] = r[0] + r[0]; } else { w[i] = w[i - 1] *(r[i]-w[i + 1]); } } FILE *fpw = fopen("C:\\Users\\XXX\\Desktop\\bbb.csv", "w"); for (i = 0; i < N - 1; ++i) { fprintf(fpw, "%d %.5lf\n", i + 1, w[i]); } fclose(fpw); return 0; } お手数ですが、よろしくお願いいたします。

  • 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

  • csvファイルの特定のセルから読み込み

    C++についての質問です。 あるファイル(テキストでもエクセルでもCSVでも可)に書かれている特定のセル数値(整数)を読み込んで、プログラム内で入力する方法が知りたいです。 例えば、"test.txt"というファイルに 1 2 3 4 5 3 2 3 1 2 というような数字の羅列があった場合に,2行目4列目のセルの値を読み込む プログラムは、どうのうにすればできるでしょうか?

専門家に質問してみよう