小さなExcelファイル(35列、2000行、隠しコンテンツなし)で行処理を行うVBスクリプトがあります。 .xlsファイルに適用すると、ファイルの処理に約3秒かかります。 .xlsxファイルを.xlsxファイルとして保存すると、同じスクリプトで約30〜60秒かかり、処理が完了して結果は正しいものの、Excelが完全にフリーズします。XLSファイルで正常に動作するが、XLSXファイルでハングするVBAスクリプトのプロファイル/デバッグ方法
私は、コードの一部のループ部分が原因だと思っていますが、私はそれを見つける必要があります。私はprintf
-debuggingと似ていますが、それは非常にエレガントではなく、また大規模なスクリプトのために多くの時間を消費する、基本的にhttps://stackoverflow.com/a/3506143/5064264のようなスクリプトが手でスクリプトのすべての部分をタイミングすることになります。
ほとんどのIDEのパフォーマンスアナライザのような半マニュアルプロファイリングの方が良いでしょうか、あるいはこの問題に対する他のアプローチがありますか?私はかなり長いので、コードを投稿したくないですし、将来私は他のスクリプトのためにそれを解決したいと思います。
xlsファイルの最大行数は65,536です。 xlsxファイルの最大行数は1,048,576です。私は '.Rows'を検索することから始めます。私の推測では、いくつかのコードでは、データを含む行だけでなく、ワークシート全体を反復処理しています。 – Comintern
@ Comintern提案していただきありがとうございます。私はそれらの出現を固定値で置き換えました、そして、これはそれに貢献するかもしれません。 – user121391