[[20200602160314]] 『excelが急に重たくなった』(灯台下暗し) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『excelが急に重たくなった』(灯台下暗し)

昨日までは問題なかったが、本日作業中に、excelが急に重たくなった。
VBAを使用し、VBAで計算した結果のセルをコピーして他のファイルに貼り付けようとするが、コピーした段階でフリーズ状態になり数分継続する。なお、画面で複数のセルを選択するだけでも、cpu使用率が40%近くに上昇し、何もしなくてもその状態が継続することもある。どなたか簡単な対処方法をお教えください。
pcのメモリは8GB,windows10,excel2019です。システ更新(オフィスも自動的に更新されたはず)し再起動しましたが、excelの動作に変わりはません。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


昨日までのブックのコピーはありますか? あるようなら、現在のものとファイルサイズを比較してみてください。

大量にサイズ増加している場合、不要なスタイルを別ブックからコピーしてしまい、速度低下につながってしまった可能性があります。

または、他ブックへのリンクを行っており、リンク先がサーバ上のフォルダで、名前が変わった、という場合は、Excelが勝手にサーバを探しに行ってしまい、遅くなる場合があります。

とりあえず、昨日までのブックをコピーし、これで作業しても再現するか確認し、環境のせいなのかブックのせいなのか切り分けましょう。
(???) 2020/06/02(火) 16:58


ご返事ありがとうございます。昨日分はありませんが、先週分はありましたのでファイルサイズを比較しました。週単位の作業なので形式は同じですが、データは全く相違。今週分は途中段階なのでどのファイルも先週分よりは小サイズです。いずれも他のブックへのリンクはありません。
但し、先週分の主要ファイルのコピーを作成し、テストしてみました。
今週分ファイルはセルを範囲選択してコピーするだけ(貼り付けはしていません)でcpu使用率が40%近くに上昇し、それが数分継続するのに対して、先週分コピーファイルは7%程度の上昇で数秒で0に低下します。
なお、ファイルをクローズして、再度開いた場合(開いただけ)はどちらも15%程度に上昇し、直ぐに低下します。
原因が全く分かりません。
(灯台下暗し) 2020/06/02(火) 18:12

コードが示されていないのであてずっぽうですが、
>コピーした段階でフリーズ状態になり
とのことですから、UsedRangeをコピーするようなコードになっており、何らかの原因で関係ないところまでUsedRangeの対象になっちゃっていて、メモリを消費するようになっちゃってるんじゃないでしょうか?

VBA上で発生している不具合ならば、ステップ実行してコードの不具合なのか、ブック自体に問題があるのかの切り分けも必要だとおもいます。

(もこな2) 2020/06/02(火) 20:01


「コピーした段階でフリーズ状態」はcpu利用率は37%程度が続くが、「フリーズ状態」にならない場合もあります。アクティブな範囲は指定範囲だけが破線で囲まれ、範囲が拡大されている状態にはなっていません。なお、cpu利用率が高くなり継続される状態はVBAを使用していないxlsxファイルでも生じています。
(灯台下暗し) 2020/06/02(火) 21:51

ファイルサイズは増大していないようなので、不良スタイルのコピーは無いようですね。(若干上下するのは、ブックがZIP圧縮されたものであるためであり、普通です)

コピーしたものを貼り付けるのは、どうやっているでしょう? CTRL+V でしょうか。 これだと値のコピーではなくセルオブジェクトのコピーなので、右クリックからの値だけ貼り付けにすると速くなったりしませんか?(コピーするだけで遅いのは、CTRL+Vで貼り付けたため、コピー領域内の値が別ブックのリンクになっているから、とか)
(???) 2020/06/03(水) 09:27


ご返事ありがとうございます。
VBA(A.xlsmファイル)で逐次追加検討対象の行データを複数単位に処理した結果を別のファイル(B.xlsx)に蓄積し、B.xlsxで全蓄積データを全体的に評価検討するのが主たる作業です。

A.xlsmで行データをじかに入力検討し処理結果をB.xlsxに移す場合と、B.xlsxで追加検討した行データ(書式なしのデータのみ)をA.xlsmへコピーし、VBA計算した結果をB.xlsxに戻す(上書き)場合があります。

A.xlsmは列毎に入力データ部に条件付き書式(1つ)と他の書式を設定しています。VBA処理で計算結果セルの書式を変更(注意データの意味)する場合もあります。
VBA処理後、A.xlsmの処理結果を複数行CTRL+Cでコピーし(この段階でcpu使用率が向上し、40%程度のままで数分間フリーズ状態になります)、フリーズ状態が解消した後に、B.xlsxにCTRL+Vで貼り付けます。
これが、ご指摘の様にリンクということでしょうか?どう対処、改善すれば良いでしょうか?

参考:以下は参考になるか分かりませんが、調査の結果です。
今朝この投稿前に、A.xlsmファイルを調べると、条件付き書式が多数存在していました。原因は良く分かりませんが、A.xlsm内で行をコピーする場合があること、B.xlsxから検討データをコピーの際に、データだけでなく書式もコピーしたためかもしれません。、
このため、どちらのファイルもセルをコピー選択(1行の複数セルなど)するとcpu利用率が高いままになるのかと思い、A.xlsmの条件付き書式を全て消去し、再度条件付き書式1つ(別途列単位の書式も複数存在:これも全て消去し再設定)にして、B.xlsxの蓄積データをすべてA.xlsmにデータのみコピーし、VBA計算した結果をB.xlsx(旧蓄積データは全て消去後)に戻してみました。
結果は矢張り同じで、どちらのファイルも1行の複数セルを選択しコピーすると、cpu利用率が40%程度に上昇に、数分間高いままフリーズ状態になります。その後は、cpu利用率は低下し、次の操作はできますが、効率が悪い状態です。

(灯台下暗し) 2020/06/03(水) 11:00


「リンク」とは、xlsxファイルのデータタブの「クエリと接続」に関することでしょうか?この欄の「リンクの編集」は灰色表示で編集可能なリンクはないようです。
(灯台下暗し) 2020/06/03(水) 14:07

「クエリと接続」ではなく、「データ」−「接続」にある「リンクの編集」です こっちの事であれば、灰色になっているならば、リンク貼り付けにはなっていないでしょう。

別案として、2ブック共、新たにブック作成し、値は右クリックで値だけコピーし(枠線とかは引き直す)、CTRL+V を使わずに右クリックからの値貼り付けだけで作業しても、同じように固まるでしょうか?(つまり、コピー元のオブジェクトをできるだけ軽くする)

あとは、Excelの問題ではなく、PC環境の問題である可能性でしょうか。 Cドライブの空きはどのくらいあります? エクスプローラで見て、赤や黄色になっていないでしょうか? コピーする範囲が徐々に大きくなり、必要なメモリサイズが増加していき、メモリでは足りなくなってディスクにスワップして、遅くなっている可能性がないでしょうか。 コピーする範囲を狭くすることで、確認できるかと思います。

PC環境の問題だった場合…、一気に範囲コピーすると遅くなるのは、どうしようもないかも。
(???) 2020/06/03(水) 17:47


ドライブの最適化を行ってみては?
(mar) 2020/06/03(水) 17:52

 他のPCでも同じようになるんですかねぇ?
(BJ) 2020/06/03(水) 20:24

ありがとうございます。
excel2019で、「データ」に「接続」分類はなく、「クエリと接続」分類の中に、更に「クエリと接続」、「リンクの編集」等があります。「リンクの編集」は灰色です。
「クリックで値だけコピー」とは、右クリックで選択し、メニューからコピー選択して、別ファイルで位置選択し、右クリックでメニュー選択し、値を張り付けることですね。CTRL+Cでのコピー選択時と、メニューからのコピー選択時ではコピーサイズが相違するのですか? CTRL+Vと値のだけの貼り付けの相違は分かります。

2ブックの新たなブック作成ですが、A.xismは全く新たに、A新.xismは作成しました。A.xismでの多数回の計算結果を逐次蓄積するB.xisxはVBAでの計算結果や属性含むため、属性ごとのコピーが必要のため、従来のB.xisxから蓄積データ部のみを分離し、軽くして、B分離.xisxとしました。
B.xisxからA.xismへは値のみをコピーしていますが、逆はVBAの計算結果に属性データ(警告情報等)を含むのでデータのみのコピーは困難です。

データを含まないA新.xismに、新規データを1行追加して、VBA計算すると、これだけで(コピー以前の問題)excelのcpu使用率が35%強になり、数分間フリーズ状態になります。フリーズ解消後、操作(1行コピーなど)を継続すると、B分離.xisxの作業でもフリーズ状態になる場合があります。

先週まではこんな状態ではありませんでした。excelに知らない間に何か変な設定などをしたためなのでしょうか? しかし、現在、先週分の2ファイルを開いて、A.xismでセル選択をするとcpu使用率が25%程度にはなるが、フリーズ状態にはならない。ブック作成や設定上の問題でしょうか?
上記を閉じて、今週分の2つで操作すると35%強になりフリーズ状態になる。理由が全く分かりません。よろしく、ご指導下さい。

なお、Cドライブの空きは174GBで1/4程度の使用率です。
(灯台下暗し) 2020/06/04(木) 12:20


値だけコピー、とは、書き方がまずかったです、すいません。(CTRL+Cでも右クリックからのコピーでも、オブジェクト丸ごとコピーするのは一緒です) AブックとBブックを相互にコピーする際に、どちらも値だけ貼り付けることで、書式や条件付き書式を含まないようにする、という意味でした。

片方向でも条件付き書式のような余分な情報が付くと、ほんの少しずつですが、重くなっていきます。(重いブックの、シートの条件付き書式を全部確認してみてください。コピペや移動/削除で、ブツ切れになって増殖していませんか?)

新規ブックで試すというのは、書式設定や条件付き書式が増殖していない、綺麗な状態でも、範囲コピーだけで重いかどうか確認するためです。

1行だけのデータでも妙に遅い、というのは、最初に確認した、不正なスタイルが増殖していた場合に発生する可能性があるのですが、ファイルサイズは大差なかったのですよねぇ。 念のため、「ホーム」−「セルのスタイル」を、重いブックと新規ブック(まるっきりまっさらなもの)で見比べてみてください。 まっさらなブックであれば、標準で用意されたスタイルだけですが、重いものではどうなっているか、です。 不正スタイルが増殖している場合は、変なスタイル名が大量に出てきます。
(スタイルが関係している場合、問題のあるブックと一緒に開いて作業しただけで、別ブックにもスタイルが丸ごとコピーされてしまい、以降はずっと動作が重くなるので、ある日突然重くなった、という状況になります)

あとは、BJさんの書いた、他のPCでも同じかどうかも確認してみてください。 Cドライブの空きは十分そうなのでPC環境では無いように思えますが、重いブックなら他の人のPCで実行しても重いのであれば、PC環境は完全に無関係だと割り切れます。
(???) 2020/06/04(木) 13:31


条件付き書式について、当初のA.xslmには多数の条件付き書式がありましたが、新規に作成のA新.xslmは1つです。
セルのスタイルについては、今まで意識して使用したことはありませんが、調査の結果、A新.xslmはまっさらの新規ブックと全く変わりませんでした。A新.xslmでのVBA処理結果を蓄積するB分離.xisxには、メモxxが6個、標準xxが26個のスタイルがありました。

細々とした個人事業主の作業形態なので、別のPCはありません。
年初にwindows7のpcから,新たなwindows10のpcに移行し、excelも2010から2019になりました。2010に比較して、2019のVBA処理は極端に遅いです。多分、windows7のpcで処理すれば、問題なく処理できるように思いますが、危なくてできません。
(灯台下暗し) 2020/06/04(木) 16:23


セルのスタイルは、増殖していないですね。 遅くなるくらいのブックだと、数万項目くらい定義されていたりしますから、一目瞭然なのです。 そして、別のPCも無いとなると、重い原因が特定できないです。 新ブックに変えても重いので、PC環境は怪しいのですけどね。(裏でアップデートのための自動ダウンロードが走っているとか、デフラグ等のメンテナンス機能が実行中とか、セキュリティ機能が多重実行しているとか、マルウェアに感染しているとか…)

2013でOfficeはがらっと作り直されたのですが、ここでいろいろ性能低下しているんですよね。 Excelをクリックしてアクティブにすると、ウィンドウの周囲に影が付いたりするでしょう? こういう無駄な事のために処理時間が増大しているのですが、設定で消す事もできず、遅さを諦めるしかない状態です。(性能より見た目重視するMSは、滅びて欲しい) とはいえ、ある日突然、コピーだけで数分固まるようになる、という程の事ではないのですが。
(???) 2020/06/04(木) 16:42


「裏でアップデートのための自動ダウンロードが走っているとか、デフラグ等のメンテナンス機能が実行中とか、セキュリティ機能が多重実行しているとか、マルウェアに感染しているとか…」ですが、今週分の2つのブックは常時遅いのと、タスクマネージャで見ても他にOSやieなど数個のプロセスは動いてますが、高々数%のcpu使用率です。また、市販の著名セキュリティソフトも本日自動更新されており、ウイルスの問題もないと思います。
それに今週分のブックを全て閉じて、先週分のブックで作業すると、cpu使用率は20%強にはなりますが、直ぐに低下しフリーズすることはありません。
今週分のブックの場合は、セルのコピーだけでなく、ブックを選択するだけでも、cpu使用率は40%程度に上昇し、フリーズする場合があります。ウインドウの移動もできない場合があります。
excel2019のバグでしょうか?
(灯台下暗し) 2020/06/04(木) 17:24

 >VBAを使用し、VBAで計算した結果のセルをコピーして他のファイルに貼り付けようとするが、コピーした段
 >階でフリーズ状態になり数分継続する。
 プログラムの可読性が低いのでは?
(touda) 2020/06/04(木) 17:44

Excelのバグは考えにくいですね。 多くの利用者がいるので、バグならすぐに大きく報道されますから。

ブック切替だけでもそこまでとは、メインメモリだけで処理できずに、ディスク(容量からするとSSDですかね?)にスワップに行ってしまい重くなっているように見えます。 つまり、PC環境の可能性が高いと思えるのですが、古いブックだと重くない、というのは、新規に作ったブックの1行でも遅い、というのと矛盾していて、訳が判りません。 手作業コピーではなく、マクロでコピーなのでしょうか? 1行しかデータが無くても、100万行コピーしていて、メインメモリでは足りなくてスワップしている、とか?

また、市販のセキュリティソフト利用との事ですが、Windows標準のDefenderはオフにしているでしょうか? 動かしっ放しだと、ファイル1つ変わっただけで2つのアプリが取り合いをするので、とても遅くなりますよ。(セキュリティ機能が多重実行、に該当)
(???) 2020/06/04(木) 17:48


 手動でのコピペだと思っていたけど違うんですか?
 すげぇ解りにくい内容・・・。
 普通にセルに文字入力した時は?
(BJ) 2020/06/04(木) 17:55

toudaさんの「プログラムの可読性が低いのでは?」とは、???さんの言われるように、excel2019のバグの可能性は低いということでしょうか?

「セルのコピーだけでなく、ブックを選択するだけでも、cpu使用率は40%程度に上昇し、フリーズする場合があります」の原因が分かりません。どうブックを修正すれば、解決できるでしょうか?

VBAブックの計算結果は手作業で蓄積ブックにコピーしています。1行や数行のコピーが一般的です。

今週分のVBAブックの選択、セルの選択、セルのコピーなど様々な操作でフリーズする場合があります。フリーズが解けた状態で入力だけでフリーズする場合もあったように思いますが、どの操作も時間を置いて作業すればできます。しかし、作業に時間が係って現実的ではありません。継続的に作業すると色々な操作でフリーズ状態になります。
先週分の同様な形式のブックではフリーズすることはありません。ここが原因の究明の参考になりそうですが?

Windows標準のDefenderはオフになっています。

私はexcelやVBAでの開発経験は長いですが、excelの操作や機能については知らないことが多いのが実際です。「灯台下暗し」の様に、私の知らない意外と単純な所に原因があるような気はしていますが。

(灯台下暗し) 2020/06/04(木) 18:27


「excelやVBAでの開発経験は長いですが」は、「長い」だけでプロの開発者ではなく、自分の本来の仕事のために必要に応じて開発しているので、excelやVBAを必要な部分に限定して使用しているということです。したがって、excelやVBAについての知識は狭く、excelの初心者と余り変わらないということです。このため、私の知らない初歩的なミスが原因かもしれないということで、ご指導ください。
(灯台下暗し) 2020/06/05(金) 09:05

横から失礼します。

マクロブック及び関連するエクセルブックで、コピーすると
固まり、困っていることは理解できました。

新規ブックでも、同様な事象になるのでしょうか?
既存ブックではなく、エクセルアプリを起動し、空白ブックを選択
相当セルを選択し、Ctrl+Cで再現するかどうか。

Excelではないですが、以前OutLook2010で、メール選択時の表示切り替えで、
いちいち固まることがありました。
新規pstにしても、アプリの修復をしても改善されず、最終的に再インストールで
改善されたことがありました。
何らかの影響で、アプリの一部が壊れたのでしょう。

上記確認でも、Excelが固まるようであれば、修復、再インストールを
試してみては、いかがでしょうか。

#CPU使用率は、CPUの性能により変わりますので、高いからと言って
#問題ではありません。
#100%に張り付いていたらマシンスペックの問題ですが。
#50%程度であれば、問題無いと思いますので、あまり拘らず、
#固まるかどうかで判断したほうがいいかと思います。

(tkit) 2020/06/05(金) 10:48


ありがとうございます。
新規ブックのみを開いて、Ctrl+C、Ctrl+Vを幾ら繰り返しても、cpu使用率は10%未満で固まることはありません。
従来ブックを開いた状態で、新規ブック上のみで、Ctrl+C、Ctrl+Vをかなり繰り返すと、cpu使用率が徐々に高まり35%程度になると、そのまま固まり次のCtrl+CやCtrl+Vが出来ません。

osの更新は今回の当初の投稿前に実施しました(その際、excelやoutlookも更新されたはずです<私のマイクロソフトとの契約上>)が、現象に変化はありませんでした。更新と再インストールは効果が異なりますか?

従来ブックの修復は、現在今週分の作業中(時間が係るがせざるを得ない)のため、この作業完了後の、日曜日の午後以降か、月曜日に実施します。
オフィス再インストールは、『更新だけでは効果なし』とのご意見があれば、上記の従来ブック修復では巧くいかない場合に考えます(やり方を調査した上で)。
(灯台下暗し) 2020/06/05(金) 11:53


MSサイトでは、原因不明のときはとにかくOfficeを再インストールするよう言われますが、Excel本体の問題ではないと思うので、たぶん現象は変わらないと思います。

どうすれば直るか、というのは、原因が特定できないから何が適切なのか判らない、という状態です。 ブックを直接見る事もできませんし。

マクロを使っているならば、そのコードにヒントが隠されていそう。 例えば、セル範囲に色を付けるとして、まとめて1回で着色すると、内部的には範囲と色が1つだけ書式登録されますが、1セルずつ着色すると、セル数分の書式が登録されるので、着色対象が何万箇所もあると、シートオブジェクトが重い、という状態になります。 CTRL+Vでは、このバラバラに設定した状態のまま貼り付けるため、再現してしまうので、値だけで貼り付ける必要があります。 何か心当たりはありませんか?

新しいブックにデータだけ貼り付けて…、というのを試してもらったのは、こんな状態になったシートから書式を取り除いて、軽くするためです。 これで速くなるなら手はあったのですが、データだけ新しいブックにしても変わらなかったようなので、お手上げ状態です。

新しいブックに移行するとして、データ量を減らす事はできませんか? 量の問題ならば、古いデータは移行せずに量を減らす事で、重さを軽減できるはず。
(???) 2020/06/05(金) 15:40


再インストールは不要ということで理解しました。

VBAブック(A.xlsm)に入力データを色付けする条件付き書式があり、またVBAロジックでのセルの色付けは1行に3_8個程度。1_複数行入力しVBA処理し、その後VBAロジックのないブック(B.xlsx)にA.xlsmの複数行をCTRL+C,CTRL+Vでコピー蓄積して行き、現在B.xlsxは600行程度。
A.xlsmの方は、作業用なので入力前に0にすることは可能で、作業時には1_10個程度の入力です(通常、クリアはせず上書きしています)。

次週も新ブックは共に0からスタートです。

(灯台下暗し) 2020/06/05(金) 17:06


皆様、ご助言、ご意見等ありがとうございました。これらを受けた、その後の検討や見直し等の結果のご報告です。
週末に非効率ながら週次作業のまとめをし、1週間分の作業は完了しました。
今週分の作業のため、一連作業で使用する各ブックの見直しを実施しました。

一連作業でのブックは、VBA処理で入力データをチェックし書式等を付与するA.xlsmと、この結果を蓄積するB.xlsxが主なものです。共に入力データ関係は週初めはゼロスタートです。なお、ブックとして各々週ごとに作成されます。
A.xlsmは条件付き書式を含みが当初データ量は僅かです。B.xlsxはA.xlsmの結果蓄積や過去の様々な分析結果等も含み、先々週分(週末)はかなりの規模で1100KB程度でした。
B.xlsxは、(1)過去の分析結果全体のまとめデータ、(2)週次結果を1行でまとめたサマリーの蓄積(数年分)、(3)週次の蓄積データ(週初はゼロ)で構成されます。
先週、B.xlsxの(3)部分を分離した分離データ.xlsxは週後半で400KB程度でした。

(2)の「週次結果を1行でまとめたサマリー」は、週末に1行をA.xlsmで作成します。B.xlsx上のこの1行単位に条件付き書式が存在していました。1年ほど前に、蓄積全体を1つの条件付き書式としましたしたが、その後は実施していませんでした。このため、その後の蓄積データの条件付き書式が多量に残存した状態でした。今週分の修復はこれら書式を削除し、全体を1つにしました。
また、(1)の「過去の分析結果全体のまとめデータ」部分にも、予想だにしなかった意味不明の条件付き書式が多量に存在しました(*参考)。これらは全て削除しました。
この結果、現状今週分のB.xlsx(蓄積データゼロ)は350KB程度に軽減できました。

これで、今週はフリーズ状態がなくなると思いきや、テストでA.xlsmでのデータ入力、B.xlsxへの蓄積を30行程実施すると、時折B.xlsxの1行コピー(「現存1行をコピー、貼り付け、修正で新たな入力データを作成し、A.xlsmへデータのみコピーし、処理結果をB.xlsxに上書き」の最初のコピー)段階で、フリーズ状態になる場合があります。
対処として、(1)タスクマネージャーでexcelの次にcpu使用率の高いデスクトップウインドウマネージャーのcpu使用率を下げるため、壁紙を単色に変更(*参考)。
これでも不十分なので、(2)先週同様、B.xlsxの蓄積データ部分を分離し、分離データ.xlsxを作成。この結果、小規模の分離データ.xlsxの1行コピーでフリーズ状態になることはなくなりました。蓄積データ除外のB.xlsxは参考用に開いたままですが大丈夫そうです。

これまでのご助言等ありがとうございました。
windows7でのexcel2010に比べ、windows10,excel2019ではVBA実行速度が感覚的に5倍以上は遅いので、今回もexcelの原因かと当初は思いましたが、正に灯台下暗しそのものでした。

参考:皆様のご助言と下記も参考にしました。
「エクセルの動作が重いときの20の解消法|遅くなる原因から動作停止の改善まで 」(https://www.fastclassinfo.com/entry/excel_work_slow
(灯台下暗し) 2020/06/08(月) 10:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.