Excelの複数シートからデータを取得するには?


SH700  2005-11-27 04:06:20  No: 128269

Excelに関する質問事項が多い中で、該当する回答が見つけられなかったので(検索ミス?!)
質問しました。

VBのフォーム上に複数のチェックボックスが存在し、チェックボックスで選択された項目を
該当するExcelファイルの該当するシートから取得したいのですが、複数シートからまとめて
抽出することはできるのでしょうか?
現在Excelファイルは、フォーム上のチェックボックス単位でシート分けをしている作りに
しています。ちなみに、チェックボックスの項目名称と抽出対象となりシート名が連動して
います。(チェックボックスのTagプロパティにシート名を設定しています)

もう一点、各シートから抽出する場合、それぞれのシート毎に抽出範囲が異なります。
(この辺は、とりあえず決め内でRange()で範囲することで・・・)
抽出範囲が動的に変更になる可能性があるのですが、どう判断すれば良いでしょうか?
VBとExcelは苦手なコンビで四苦八苦してます・・・
(せめて・・・ちゃんとしたDBなら・・・)

宜しくお願いします。

環境:Windows2000, VB6.0, Excel2000, Microsoft Excel 9.0 ObjectLibrary使用


特攻隊長まるるう  2005-11-28 21:03:01  No: 128270

検索ミスというより設計ミスじゃない?100%質問者が
のぞむサンプルがこの世に存在するわけがないんだから、
自分が実現したい処理を分割して、一般的に利用できる
サンプルコードの組み合わせで実現することが必要なのに、
考えてないのでしょう?プログラムである以上、最終的には
用意されたコマンドの組み合わせで実現する必要があるの
だから、処理の分割は基本中の基本。それを理解するために
プログラミングの入門書ではフローチャートとか書くわけです
が、プログラムをするのであれば、入門書を読んで、せめて
初心者レベルの知識はつけて頂きたいです。

>複数シートからまとめて抽出する
必要性を感じません。チェックボックスで読み込むシートを
選択したり、セル範囲を変えたりするんでしょ?逆に
まとめてデータを取得した方がデータ解析が面倒なのでは?
1つのシートから読み取る処理を、チェックがついている
シートのみループして実行すれば良いだけでは?

…で、DBという言葉がありますので、読み込んだデータ
を検索したり加工したりすると仮定して、これは読み込む
処理とは関係ありません。読み込んだデータをどう管理
するかです。DBを扱った事があるのであればローカルで
ADODB.Recordset を作ってみるとか。Collection や
Dictionary といったオブジェクトで管理しても良いと
思います。読み込むときは読み込みやすい処理で、
データの管理は管理しやすいオブジェクト(変数)で、
…自分の好きな形に加工するのが『プログラム』です。
1行命令を書けば自分が理解できる形にデータが
取れてくれるのは『夢』とか『奇跡』とか『偶然』です。

>抽出範囲が動的に変更になる可能性があるのですが、どう判断すれば良いでしょうか?
…何を判断?自分の決めたように好きな形で判断して下さい。
抽出範囲を誰がいつ変更するかは、説明がないとこちら
では分からないことです。

Range で指定する事は分かってるんだから、アドレスを
指定すれば良いのでは?普通に TextBox に文字列で
入力してもらうだけで実現できると思いますが?まぁ、
通常 Excel で範囲指定する時は InputBox が表示
されますから、それを[VB6.0]から呼び出して利用する
くらいはしますか。


あん  2005-11-28 21:56:23  No: 128271

複数シートがあって
それぞれのシートに決められた項目のデータがあるのなら
その項目の列全体を名前定義してあげれば
シートを意識せずにアクセスできますよ。
例  Range("項目1").Cells(y,x)
    Range("項目2").Cells(y,x)
    (この2つは別のシートにある。)

>(せめて・・・ちゃんとしたDBなら・・・)
なら、エクセルファイルをDBとしてアクセスすれば
簡単に出来るのかな?


NN  2005-11-28 22:31:49  No: 128272

> 1行命令を書けば自分が理解できる形にデータが
> 取れてくれるのは『夢』とか『奇跡』とか『偶然』です。

それと『(自作した)関数』

...ゴメン


ささ  2005-11-28 22:44:54  No: 128273

> 該当するExcelファイルの該当するシートから取得したいのですが、
> 複数シートからまとめて
> 抽出することはできるのでしょうか?

  「まとめて」の表現が何を意味するかは分かりませんが、
  複数シートのそれぞれ特定されたセルの値を抽出することは出来ます。

  ↓の情報を元に、コーディングされては?
  http://www.bcap.co.jp/hanafusa/VBHLP/excelframe.htm

> 抽出範囲が動的に変更になる可能性があるのですが、
> どう判断すれば良いでしょうか?

  抽出範囲が動的に変更になる可能性がある。と記述されていますが、
  抽出範囲はどのようなルールで動的に変更になるのか説明がない為、
  判断の仕方をアドバイスすることは私には出来ません。


通りすがり  2005-11-29 23:39:01  No: 128274

特攻隊長まるるうさんの言ってることわかるけど、言い方きつい


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加