VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/02/22(Tue) 17:57
投稿者maw
Eメール
URL
タイトル【解決】DAOを使うとExcelのプロセスが・・・

細やかなレスポンス、ありがとうございます。

> 必要な分だけ保存処理をしてExcelを閉じ、その後そのファイルを
> DAOだけを使って読み込めばいいのでは。

1回の処理で、必要なデータ量が1ケースあたりシート10枚前後で、
だいたい100ケース(最大で500程)の読込みを行うため、
保存するExcelファイルは合計1000シートもくっついたものになってしまいます。
シート数の上限はメモリ依存とのことで自分の環境での上限数は未確認ですが、
必要なデータを全て取得後に保存してDAOでアクセス、という方法は
シート数の上限という点から、なるべくなら避けたいと考えています。

> 同じファイルに対して、ExcelとDAOで同時にアクセスしている為に
> 内部的になんらかのトラブルが発生しているものと思うのですが、
> 保存した時にファイル名を変更して保存してそのファイル名をDAOで
> 読み込んだ場合はどうなりますか?

SaveAsで別名保存(Excel形式)し、そのファイルをDAOで読み込んでみましたが、
処理終了後プロセスは残っていました。
そこで、Excel形式ではなく、以下のように各シートをCSV形式で別名保存し、読み込んでみました。

:
xlSheet.SaveAs App.Path & "\test" & k & ".csv", xlCSV
:
Set DB = OpenDatabase(App.Path, False, False, "Text;DATABASE=" & App.Path &
"\;HDR=NO")
:
strSQL = "Select * from [test" & k & "#csv] "
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)
:

以上のように変更したところ、Excelのプロセスはきちんと消えました!!
この方法であれば、ローカルに一時的に保存されるCSVファイルも最大で10程度で、
特に問題は無さそうです。

花ちゃん様、LESIA様、アドバイスありがとうございました!
おかげさまで読込み処理の所要時間を大幅に短縮できました。

原因としては、花ちゃん様のコメントにもあるように、
同時アクセスが原因となって内部で何らかのトラブルが発生していたのでしょうか・・?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -