3児のパパそしてエンジニア

33歳3児のパパの家の事やエンジニアとしての事をつらつらと書きます

Excelが遅いです。重たいです。調子悪いです。

先日、私のところに電話が。

Excelが開くのも動きも遅くて調子悪いんやけど、どないしたらいい?」

と。動いてないことはないが、電話での感じはとてもストレスを感じてそう。。

 

 

どないしたらいい?ってなんやねんおもたけど。

忙しい部署やし困ってんねやろな。

 

 

[ファイルはどこにありますか。]

(サーバーです。)

[そのファイルはローカルに保存しても良いものですか]

(大丈夫です。)

[コピーしてみてください]

(できました)

[コピーは遅かったですか]

(普通ですね)

 

[そうですか。そのファイルは私も触っていいですか?]

(大丈夫ですよ)

[少し時間ください。]

 

 

ってな感じで進みまして。

これは話聞くより触ったほうがはやそうなので直接見てみる。

 

まぁサーバーにあるファイルを見てみますか。

え!?15MB?でかすぎやん?? 

唯単にでかすぎで重たいんじゃない??

 

考えても仕方ないので開きます。確かに遅い。

んー。なんでしょう。

シートは1つ、セルは多く見ても8000個ぐらいしか入力していない。

 

 

頭にピコーン!!ときて

Ctrl+Endを押してみる。入力されていない行列まで指定されるので

ごみデータでも残っているんでしょう。

エイ!ヤーで削除。

1.9MBまで落ちました!!

それでもでかいし、まだ重たい。。。

 

 

アドインも特にないし。リンクも貼ってないし。

なにした?見えへん障害物置いたな。

 

 

見えないデータか?セルは消したぞ。ってことは

図形か?テキストボックスか??正解きたやろこれ。ってことで

 

F5→セル選択→オブジェクト→OK

オブジェクトを探します。

 

。。

。。。

。。。。

。。。。。。。。。。。。。

 

ん?何もない??

いやオブジェクト選択が終わってない。

数分待つと。

デデーーーーーーーーン!!

 

「未入力のテキストボックス108853個」

 

どんな数やねん。なんでこんなんなるん?

そして自分で操作して削除するのに、重たすぎて動かせない。

消せない。

 

 

あかん時間の無駄。ほかの作業もしたい。

マクロだ。

 

コチョコチョっと。

これ↓実行して放置

 

Sub テキストボックス削除()

    Application.ScreenUpdating = False
  Dim i As Long

  With ActiveSheet.Shapes
    For i = .Count To 1 Step -1

      If .Item(i).Type = msoTextBox Then
        .Item(i).Delete
      End If

    Next i
  End With
    Application.ScreenUpdating = True
    MsgBox ("終了しました。")

End Sub

 

 

マクロ実行完了まで約30分。

 

軽くなりましたよー。どうぞ使ってくださいな。

ってことで一件落着。

「ありがとうございます。どうやったんですか?」

と聞かれましたが。

説明めんどくさいし、同じ事象が起きることはたぶん当分ないので

「ごみデータが大量にありました。時々エクセルでなるんすよ。ははは。」

で終わり。

 

 

原因がわからんけど。ま、解決したから良いでしょう。

 

 

 

値だけコピーして、新しいファイル作った方が早かったかな??

また暇なときやってみよ。

オブジェクト10万個も貼る作業が無理かな?