Showing posts with label Excel. Show all posts
Showing posts with label Excel. Show all posts

2014-03-08

Excel の worksheet を逆順に並び換える AppleScript

毎月一枚ずつワークシートが増えていく Excel のブックを使っている。毎月毎月シートを最後尾に追加していったのだけど、実際に作業するのはほぼ最新のシートだけなのにそれが最後にあると使いにくい。けれども、何十枚もシートがたまってしまっていると、手で移動するのも億劫なので AppleScript で移動してみた。

tell application "Microsoft Excel"
 
 activate
 set display alerts to false
 set num_sheets to count worksheet
 repeat with i from 1 to num_sheets
  set orig to sheet i
  set n to the name of sheet i
  copy worksheet orig before the first worksheet
  delete sheet (i + 1)
  set the name of the first worksheet to n
 end repeat
 set display alerts to true
 
end tell

Excel の AppleScript 対応ではワークシートの移動ができないので、コピーと削除を組み合わせて使っている。

ワークシート間で参照があると当然おかしくなってしまうので、そのあたりは要注意。

2013-02-13

EXCEL でファイルの保存に異常に時間がかかるようになったり、VB Editor を開くとメモリが足りないと警告されるようになったらやってみること

ここしばらく(かなり長い間)日常的に使っている EXCEL のファイルでいろいろ困ったことがあったのだけれど、どうやら解決できたようなので、同じようなことで困っている人の参考になれば。

症状としては以下のようなもの(利用環境は Mac OS X 10.7 で Mac 版の Office 2011)。

  • いくつかのファイルでファイルを保存するのに数分〜十数分もかかる
  • 時にマクロ起動時にメモリ不足の警告が出たて実行できなかったり、
  • そもそも VB Editor が起動できないことがあったり、
  • さらにファイルを保存できなくなったりする
など非常に不安定な利用状況にもなっていた。

これらの症状が出るのは特定のいくつかのファイル(とその使いまわし)に限られていて、同じマシンの別アカウントや別のマシン上でも特に変わることなく、原因も不明で長い間困っていたのが、やっとのことで解決することができた。

その解決方法は、ワークシートの不要部分を削除するというもの。

EXCEL はワークシートに使えるセルの数が非常に多いのだけれど、実際には使う範囲しかデータを保持しないようになっている。それが、なにかのはずみで実際に使っている領域からはるか遠くの未使用のはずのセルが使用中として EXCEL に認識されてしまうというのが原因だったらしい。遠くのセルが使用中扱いになると、保存時の処理もそれだけ多くなり、メモリの利用状況や処理時間に影響が出ていたのだろう。

解決方法は実はけっこう簡単で、使っていない部分のセルを「削除」後保存しなおすというもの。

実際の例をあげると、A1:H11 までの領域しか使っていない(はずの)場合なら、まず、I のコラムヘッダをクリックして一列選択してそのまま Shift + Cmd +「→」で右の未使用(のはずの)領域を選択し、 delete キーで Hコラムよりも右側を削除。A11 より下の領域も同様に 12 行目のヘッダ(横にあってもヘッダ?)をクリックして一行選択して Shift + Cmd + 「↓」で未使用(のはずの)領域を選択し、delete で削除。これでいらない部分のセルは全て未使用となったはずなのでそのまま保存すればいい。

今回のトラブルの原因とは直接関係なかったようだけれど、ネットを検索してみると同じような症状でマクロが原因になっていることもあるらしい。その場合はマクロを VB エディターで別のファイルに書き出したあとで削除、ワークシートの保存、書き出したマクロの読み込み、そして保存、という手順で問題が解決することもあるとか。