プロが教えるわが家の防犯対策術!

こんにちわ。
Excel2003のマクロでcsvファイルを読み込みたいと思っています。
csvの中身は下記通りです。
例)
  A   B   C   D..........
1  "氏名"
2  2    2   1   3....(整数の羅列)
3  1    3   2   3....(整数の羅列)
4  3    3   3   3....(整数の羅列)
5  2   1   2   3....(整数の羅列)
このファイルを、エクセル上でボタンを押したら(マクロを実行したら)指定した行のみを読み込んで、それをエクセルのシートの指定したセルに代入するのは可能でしょうか?それぞれの行の整数の数は違います。

A 回答 (7件)

ANo.3です。



読み込む毎にカウントを行なう。
カウント数(行数)に応じて処理を変更する。
変更はIF文・SELECT CASE文などで分岐する。
2行目以降については、前回の質問の方法がいかせるはず。
書き出すシートの指定を忘れずに。

と言った所ではないかと。

この回答への補足

ありがとうございます!その方法で挑戦してみます。

補足日時:2008/09/17 08:46
    • good
    • 0

読み込んでの処理が困惑するのであれば、csvファイルを開いておいて


そこからデータを引っ張り込むようにしてみては如何でしょう。
    • good
    • 0

http://oshiete1.goo.ne.jp/qa4320861.html
の関連質問なのでしょうか?

でしたら現状できているコードをお示しになった方が解決が早いかと

データの区切りに法則性がないと補足されていますが 以前はカンマ区切りだとして質問なさっていますよね …

この回答への補足

すみません。カンマ区切りでした・・・。

現状、まだ処理部分のコードは出来ていません。

補足日時:2008/09/17 09:27
    • good
    • 0

#2です。

補足いただいたのですが
疑問点がいっぱい。
ーーー
基本的には、CSVの行データを、エクセルシートでは列方向(上から下)にセットしたいのですか?
ーー
>シート1のに、2行目を読み込んだらシート1のB14:B145に、3行目を読み込んだらシート2のB14:B73、E14:73、H14:H73・・・というように・・・
第1行目とは、氏名(例 大山 一郎)ですよね
それをA1:K1とは、同じ名前を11列に渉って入れるのですか?
>2行目を読み込んだらシート1のB14:B145
とは第2行目だけは、132行分のCSV項目があるのですか?
第3レコードの60項目?と大きく違いますが。
>シート2のB14:B73、E14:73、H14:H73
ココでシートが変わる理由は?
ココ以後はSheet2にデータをセットし、
60項目あるということですか?
それ以後は
第3レコード B14:B73
第4レコード E14:73
第4レコード H14:H73
・・・
のように、3列(中2列飛ばし)ごとにセットするのですか。
>それぞれの行の整数の数は違います
これと第3レコード以後は60項目らしく
第3レコード B14:B73
第4レコード E14:E73
第4レコード H14:H73
とあって
それでは同じ項目数のようでは無いですか?

この回答への補足

分かりづらくてすみません。

>基本的には、CSVの行データを、エクセルシートでは列方向(上から下)にセットしたいのですか?
そうです。csvの行データをエクセルの列方向にセットしたいと考えています。

>第1行目とは、氏名(例 大山 一郎)ですよね
それをA1:K1とは、同じ名前を11列に渉って入れるのですか?
すみません。K1に氏名をセットします。

>2行目を読み込んだらシート1のB14:B145
とは第2行目だけは、132行分のCSV項目があるのですか?
第3レコードの60項目?と大きく違いますが。
2行目は132項目あります。

>シート2のB14:B73、E14:73、H14:H73
ココでシートが変わる理由は?
ココ以後はSheet2にデータをセットし、
60項目あるということですか?
都合上そうなってしまいます・・。

1行目はシート1のK1に、2行目はシート2のB14:B145に、3行目はシート1のD3:P3、4行目はシート1のD6:P6、5行目はシート1のD9:P9、6行目はシート1のR3:W3、7行目はシート1のR6:W6、8行目はシート3のB14:B73、E14:E73、H14:H73にセットしたいと考えています。

補足日時:2008/09/17 08:50
    • good
    • 0

既に別に質問を立てていたのですね。



>指定した行のみを読み込んで、
とは、読み込んだ行に”指定文字”が含まれているかどうかを判定し、
含まれていたらセルへの書き込みを行ない、そうでなければ書き込まず
次の読み込みを行なっていくだけです。

ただし、”指定した行のみ”の詳細を明確にしないと回答も困難です。

この回答への補足

前のスレからありがとうございます。
詳細はANo.2の補足の通りです。

補足日時:2008/09/16 15:27
    • good
    • 0

質問の表現が不十分では?


>指定した行のみを
これは1行のみを指定するのか。
その行番号は何がはいっているか、通常知らないはずでは。
氏名(例 三浦 一郎)などを指定し、三浦 一郎に関するデータを表示したいのでは?
三浦 一郎はデータを総当りすれば探せるが、三浦 一郎のデータ行の最後はどうして判別できるか?
一人文の行数は決まっているのか?
A列だけデータがある行が出ると次の者のデータの始まりと看做すのか?。
こういうことを心配しないで、4行目の4を指定すると第4レコードを表示するのなら私の思い過ごしですが。
ーーー
>1) の指定の方法などが分かりません。
こんなのWEB照会すればわかることだよ。
http://www.k1simplify.com/vba/tipsleaf/leaf291.h …
など。
このレベルで質問すれば、丸投げ質問になるよ。

この回答への補足

すみません。質問の表現が不十分でした。
一つのcsvファイルに例のような形でデータが入っていて、
例)
  A   B   C   D  E  F  G  ・・・
1 "氏名"
2   2   2   1   3   2  ・・・
3   1   3   2   3   1  2  3・・・
4   3   3   3   3   3  1・・・
5   2   1   2   3   ・・・
各行の整数の値はテストの選択番号で、1行目を読み込んだらシート1のA1:K1に、2行目を読み込んだらシート1のB14:B145に、3行目を読み込んだらシート2のB14:B73、E14:73、H14:H73・・・というようにcsvの値を代入したいと考えています。別に行数を指定する必要はありませんでした。

補足日時:2008/09/16 15:26
    • good
    • 0

1) Openステートメントでファイルをオープンする


2) Line Inputで指定行の直前まで空読みする
3) Line Input指定行を読み込む
4) Closeファイルを閉じる
5) データを分解する
  データの区切りに法則性があるなら Splitで分解
  統一性の無いの区切り方式なら自前の関数を作成
6) 指定セルへデータの流し込み
といった手順でしょう

1) の前にファイルの指定や 何行目を読み込むとか、どこのセルへ転記するなどの処理も必要ですが ・・・

この回答への補足

ご回答ありがとうございます。
もしcsvの中身が
A   B   C   D  E  F  G
1  "氏名"
2  2    2   1   3  1
3  1    3   2   3  2  3
なら、どのようにすればよいのか教えていただけないでしょうか?
1) の指定の方法などが分かりません。
5)のデータ区切りに法則性はありません。

補足日時:2008/09/16 12:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!