1

別の質問者の方の「Excelに関するライブラリを使用する際、毎回ファイルを開きなおしてしまう」にも関連するかもしれないのですが、開くのに30秒くらいかかる重たいExcelファイルを扱っている場合、単に「最終行を取得する」など単純な操作をしたいだけなのに、ライブラリを実行する度に、既に開いているブックをまた開いてしまうため数十秒余計な時間がかかって非常に時間が無駄です。

原因を探るためExcel操作系のライブラリのスクリプトを見ると、必ず最初に「既に開いているブックかどうかを確認するためだけにブックを開いて、すぐ閉じる」みたいな記述があるように見えるのですが、これは何のためにやっているんでしょうか? 何か意味があってやっているのだとは思いますが、スクリプトの知識が浅くよく理解できません。これのせいで重たいExcelファイルの操作が非常にやりづらく、時間がかかってしまうので、スクリプト前半のほとんどをバッサリ削除してみましたが、特に支障がなく動くのでなおさらモヤモヤします。改造して使うにしても、この前半部分の処理の内容をよく理解しておきたいので、どなたかご解説願えませんでしょうか?

使用環境:Win10 Pro, Winactor v5.0.?(すいませんバージョン失念しました…), ファイルはすべてローカル

新しいコメントを投稿

自己レスになりますが、使用するExcelファイルをまず「ファイルと関連付いているアプリ起動」で開いておくことで「開き直す」ように見える挙動はなくなりました。

「Excelブックが別プロセスで開かれる場合がある」という質問で類似の議論がされていましたが見落としていました、失礼しました。

実は、(いろいろ事情があり)ファイルを開く代わりに「ファイル使用中チェック」を使った後に発生していました。使用中チェックをしたファイルは開いたままになるので、「ファイルを開く」の代わりに安易に使っていたのですが、その後にそのブックを操作しようとすると別インスタンスで開いてしまうのか、問題の挙動が見られました。

スクリプトの前半は、既存のExcelのインスタンスで開くための記述のようです。ファイル使用中チェックと普通に開くのとどういう違いがあるのかまだしっかり追えていないのですが、とりあえず現象は消失しました。ちなみにExcel2010です。Excel2013からウィンドウの管理方法が変わったというのも関係ありそうです。もう少し挙動を調べてみたいと思います。

「Excelブックが別プロセスで開かれる場合がある」

こちらの質問に対してコメント書かせていただいたものが参考になるかもしれません。