none
ADOを(自ワークブックの)Excelデータで使用する RRS feed

  • 質問

  • Excel2000,2003,2010のVBAでの質問ですが、

    自ワークブックに所属する標準モジュールでADOをExcelデータで使用する(http://support.microsoft.com/kb/257819/ja)をしたのですが、
    ・そのVBAにはパスワードがかかっている
    ・そのExcelデータは自ワークブックに所属する

    の場合、Excel終了時(Application.Quit())におかしくなります。おかしくなるなり方にはいくつか有りますが、
    ・ワークブック・VBEとも終了するが(画面から非表示になっているだけかも)、VBAのパスワード要求が来る〔大部分の場合、典型的〕
    ・異常終了し、回復してもVBAの予期しない箇所を実行してくる
    が主な事象です。

    上記リンクでも、ワークブックにパスワードがかかっていると問題だとは記載されていますが、VBAのパスワードの件は有りません。
    実際のところ、どうしようもなくて、ADOを(自ワークブックの)Excelデータで使用するのはあきらめ、ExcelデータはFor Nextで検索する様に
    しました。

    本当にだめだったのでしょうか?

    -----------

    後、冗談抜きで工数をかけて調査したので、自然と、自分なりの仮説を立てる所まで至りました。ソースは皆無です(すでにソースが有ったら、質問はしません)。
    これについてのご判断もお願いします。

    仮説:終了時におかしくなる原因:
    ・「ADOをExcelデータで使用する」場合、そのADO部品の終了条件として、Excelワークシートが閉じられる事が必須である。(仮説)
    ・Excelワークシートが閉じられるためには、そのワークシートが使用していたすべての部品が終了する必要がある。(仮説)
    ・両者はレースコンディションとなり、典型的にはExcelワークシートを閉じることに失敗し、VBAのパスワード要求が来るが、べつのタイミングでひっからまると異常終了を起こすことがある。

    -----------

    よろしくお願いいたします。

     


    くわぢ

    • 編集済み kuwadgi 2011年9月18日 5:54
    2011年9月18日 5:53