Q&A

回答の並べ替え:
投稿新規に質問を投稿する

重くて固まるのを防ぎたい

re-na re-na

2019-08-30 13:26

お世話になります。

数万行あるシートを作成すると、重くてアクションの検証もままならないし、
シートの保存すら、メモリ不足で失敗することがよくあります。

メモリは8GBで、Curlのメモリ開放などもやっていますが、
行列が多すぎるためか、あまり効果がないです…。

そこでお聞きしたいのですが、シート全体にフォントや罫線の設定などをしないほうが、
少しは軽くなるのでしょうか?

他に何か、少しでも軽くするための方法や、
バッチ処理アプリの作成でのノウハウなどがあれば、
ご教示いただけないでしょうか。

どうぞよろしくお願いいたします。

re-na re-na
Yexiongmao様、大変参考になります。
どうもありがとうございました!
Yexiongmao Yexiongmao
メダルベストアンサー
こんにちは。

以前にCELFサポートに同様の質問をしたところ以下の回答をいただきました。
(一部割愛)
----------------------------------------------------------------------------
【回答】
CELFの実行エンジンであるCurlRTEは32bitアプリケーションですので、
OSが64bitでメモリを潤沢に搭載していたとしても、
32bitアプリケーションの制約により約2GBしか利用することができません。

尚、CELFアプリでは、以下のケースに該当する場合、
メモリが増加する傾向にございます。

・複雑な数式を使用しているセルが大量にある
・塗りつぶし等の書式設定しているセルが大量にある
・シートサイズ内で無駄な領域が多い
 (都度、未使用の領域に対し、データクリアを行うことでメモリ使用量が抑えられます)
・隠しシートに大量のデータをセットしている

これらに該当する場合は見直していただけますと、
メモリ消費を抑えることが出来る可能性がございます。
-------------------------------------------------------------------------------

アプリのテストのために、アクションセットの「テスト実行」「アクションセットによって行われた変更を元に戻しますか?」「いいえ」
として、大量のデータをシートに持ったまま、アクションセットの作成編集をして、保管時エラーになってよく泣きました。

そこで、必要なデータを残して他データと書式をクリアするアクションセットを作成して、「テスト実行」してからアクションの編集、テストを行ったり、また、取得したデータと、書式を全てクリアするアクションセットを作成して、アプリの実行に必要なくなったタイミングで実行するなどしています。
セルに予め式を埋めておいて、データをセットするような場合は、SQLを使用できるならば、できる限りSQLで計算結果をセットするのが良いと思います。
また、隠しシートは、シートを閉じてメモリを開放することができないので、データを全て削除するアクションは必須だと思います。