okkyの日記: Workbooks.open 5
実は、仕事で80個ぐらいの Excel ファイル中のデータを片っ端から同じ形式でグラフ化する、という目に合っていて。
それも「毎週のように追加のデータを加えていく」というすごい状態で… orz
# いや、そのデータから Excel に落とす所はもうプログラムでやってあります。
もちろん、グラフ化する部分は VBA であっという間に自動化できたのだが、
そのVBAを80個の Excel ファイルに適用する
ってのがかなり激痛だった。そりゃだって、1つづつ開いて、VBA読み込ませて、実行して、保存して…を80回も繰り返すのだから…
で、今日ようやっと時間ができたので、「VBAで Excel Book を開いて」「Excel Book をセーブして」「Excel Book を閉じる」方法を探した。
Google先生に聞くと片っ端から「Excel 上でVBAを開く」方法ばかり…逆だっつーの。つーか、Excelを起動する時に .bas ファイルを読み込んで欲しいってだからシートとしてじゃなくてよぅ…
.
で、やっとこさ見つけましたよ。
Workbooks.Open "ファイル名"
’まぁ好きなように Excel ファイルを弄ると思いねぇ
ActiveWorkbook.Save
ActiveWorkbook.Close True, "ファイル名"
Saveをせずに Close すると「そのファイルはすでにあるが上書きするか?」と聞いてくる。いやいや、上書きしたいんだが…と思って Close をしばらく(1分ぐらい)調べたけど良い方法が見つからない。
「あぁ、じゃぁ 先に Save しとくわ」
とやってみたら、文句言われなくなった。
あとは、ファイル名を関数の引数にして、その関数を違うファイル名で呼び出す関数をずらーーーと書いて(というかそれすら面倒なので awk 先生に頑張ってもらって)。
お陰様で、80個のファイル処理がなんとたったの50分にっ!!!
しかもその間、マシンを全部 Excel に取られるため、めでたくお茶を飲みながら本を読んでるしかやれることがない状態にっっ!!。
めでたし、めでたし。
Perl + R (スコア:2)
その80枚のグラフをいつ誰がみるんじゃというのも問題でしょうが。
Re:Perl + R (スコア:1)
それも問題ですが、Rで作ってしまうと他の人がいじれなくなる(いじるための勉強をしない)ため、編集作業が全部こっちに返ってきます。
それではオフローディングの意味がないのです。
fjの教祖様
VBAでできるなら・・・ (スコア:2)
V [microsoft.com] B [microsoft.com] S [microsoft.com]ですればもっと効率良くなったりしないのかな?
#UI欲しい場合はExcelから呼び出すのもありか・・・
Re:VBAでできるなら・・・ (スコア:1)
効率が良くなると、お茶する時間が無くなるので却下です(ぇ
大丈夫。すでに人力でやってる連中の何千倍も速いから。
# 頻繁に「お前の目の前にあるのは電卓ではない」と叱りつけたくなる。
# ましてや「大変だからデータ見たくない」とかいうのに至っては、
# 「『仕事』って言葉の意味を考えやがれ」と、29Fの窓から放り出したくなる。
fjの教祖様
Workbooks (スコア:1)
そんなオブジェクトがあったのか。
って、最近はGoogle Apps Script使うことが多い。
屍体メモ [windy.cx]