続きです。
EXCELのマルチプロセス化での技術的な話をすれば
①VBAからOnTimeメソッドを使って、複数のVBSまたはExcelVBAを起動する。(マルチプロセス化)
②それぞれのプロセスに仕事量を分散させて、並列処理させる。
③処理結果を集約する。
です。
しかし、②の肝心の処理部分が「とある特定のブックに同時に書き込む」と言う処理を行う場合、書き込まれる側のEXCELファイルが負荷に耐えられない問題が発覚しました。
■しかし並列処理自体の有効性は
たまたま出力先がEXCELシートと言うアプリケーションを利用してるから並列書き込み処理が無理なだけで、出力先がEXCELシートでなければ、並列処理はできて優秀なわけですね。
ですから、EXCEL君には「完成したデータファイルを読み込み表示する」と言う役割しか期待できないので、それ以外の部分での性能向上を目指すと言う理屈になるわけです。
■実はSEにとってEXCELとは
非常に便利なツールなのですが、とにかく遅い。
VBAが遅いのではなく、シート内容の変更が遅い。耐えられないのですよね…。
SEは、EXCELで扱えるデータ量・高速化の限界に、こうしてたどり着くわけか…。
まさか出力先の機能に起因して、高速化の限界が訪れるとは思ってなかったな…。
■分かった事
ExcelVBAの高速化の限界、ボトルネックは、シート・セルの変更(分かっていたが、ここまで痛感するのは初めて)
大量データのシートへの出力は、マルチプロセス化しても、変わらない(それどころか、PCがフリーズする原因になる)
従って「大量データをマルチプロセスでシートに同時に書き込む行為は素直にあきらめる」