Excel用ファイルをMSFlexGridに表示する(DAOを利用)
http://www.bcap.co.jp/hanafusa/VBHLP/daoexcel.htm
を活用させて頂き、
10500行、10列、2.29MB のExcel表をMSFlexGridに読込んだ
ところ 5555行しかどうしても読込んでくれません。
列は全(10)列表示されました。
環境はVB6、SP5、WIN98、およびXPです。
全行読込むための解決策をどなたかご教授下さい。
もしかしたら、このあたりが関係しているのかも知れません。
http://support.microsoft.com/default.aspx?scid=kb;ja;191006
> 読込むための解決策をどなたかご教授下さい。
行数を例えば20行に固定してしまい、別途その横にVScrollを配置し、
スクロール量に応じてセルの内容を自前で書き換えていくとか。。。
(実際、そのような作り方をしたプログラムを幾つか見た事があります)
もしくは、MSFlexGridの使用を諦めて、別のコントロールに変更するとか。
通常は読込めると思うのですが?
DAOを使っても35万セルまでなら読込めました。
エラーメッセージ等は出ていないのでしょうか?
データに問題がありませんか?
途中でデータの型が変わっているとか
一度DAOを使わない方法で読込んで見て下さい。
お手数をおかけしております。
セル数は間違いなく35万以下です。
全くエラーメッセージは出ませんでした。
データの型ですが、3種類全く異なったエクセル表
でトライしましたが、矢張りどの場合も5500行付近で
止まってしまいます。
又、エクセル表を途中で2分割して試してみましたが、
特定の行で止まる訳ではないようです(データ型による
ものではないようようです)。
引続きご検討をお願いします。
まったく同じデータ(1234等)を10列×10000行のデータを
作成して試して見て下さい。それでもだめならコードを投稿してみて下さい。
因みにデータはどのようなデータですか?
5500行付近で止まった原因が解りました。
読込まれたMSFlexGrid表の列を確認したところ
63列存在しました。
行数x列数は略35万セルに相当します。
Excel表は10列であるのに何故63列表示されて
しまうのか?、Excel表と列数を同じにするにはどうすれば
よいのか? を引続きご教授下さい。
> 行数x列数は略(約?)35万セルに相当します。
あ、やっぱり。(^_^;)
> Excel表は10列であるのに何故63列表示されてしまうのか?
「書式設定されたセル」や「空白文字が書かれたセル」などが
63列目に実在しているのでは。
Excelにも余り精通していないため、正しいか
どうか解りませんが、11列以降を全て削除
しての実施です。
即ち、11列目移行にはデータ等が存在しないと
思うのですが?
> 11列以降を全て削除しての実施です。
削除ではなく、「1〜10列を新規ブックにコピー」してから実行しても、
同じ結果になるかどうか、試して見てください。
# こちらにはそのデータが無いので、確認しようが無いのが残念。。。
大変にお騒がせしました。
魔界の仮面弁士さんの Advice ”削除ではなく、
「1〜10列を新規ブックにコピー」してから・・・”
通りに実施した結果全ての行を読込むことができました。
従って、原因はExcel表のゴミにあったこととなります。
どうやらVB以前に Excel を勉強する必要がありそうです。
皆さんありがとうございました。
ツイート | ![]() |