Excel VBA > ツール・システム紹介 > 24時間常時起動するExcel VBAプログラム感想
このエントリーをはてなブックマークに追加

24時間常時起動するExcel VBAプログラム感想

Excel VBAで24時間起動は結構大変

数年前ですが、Excel VBAを使って24時間起動させるプログラムを作成しました。
ただ、経験上、Excelで作ったプログラムは動かし続けると、徐々に重くなりはじめ最終的には固まるというのがあるので24時間起動でも処理量を犠牲にしたプログラムを作りました。
犠牲というのは、一定時間プログラムを実行したら、一度Windowsを再起動させ、再度プログラムを実行させるというものです。
Excel VBA側で制御できない部分もあり結構大変でした。しかもアドインプログラムで「ある程度」制御できるようにしましたので余計大変でした。
ちなみに対象となるExcelデータは140万件(100MB以上)の超巨大データ群でした。
今思えば、よくファイルが壊れなかったと。。

事前準備

Windowsの再起動処理やExcel起動時以降についてはExcel VBA側で制御できますが、例えばWindows(XP)のログオンなどはExcel側からでは触ることができず、事前に準備しておく必要がありました。
当時は以下のようにしました。
・Windowsのログオンはパスワードなし(PCを起動すると自動ログオン)
・スタートアップにExcel本体のショートカットを入れる
・アドインを設定しておく

スタートアップにExcelを入れておけば、Excelが起動できるので、これを使ってExcel(アドイン)側で制御できるようにしました。

アドインで制御できること

自動実行していると他のExcelの作業ができなくなるので、任意のタイミングで自動実行しないようにする必要がありました。
そこで2つの設定を用意しました。これをアドイン側から表示し設定できるようにしました。

1つ目がExcel起動時に自動実行するかしないかの設定です。
(下記フォームの下部)

そしてもう一つが実行直前にタイマー風の画面を用意しました。

このようにすることで自動実行の有無を切り分けるように作りました。
自動実行した場合は予め組み込んでおいたプログラムが起動し、一定量を処理したら、保存してWindows再起動です。

うまくいけば、夜間を有効活用

上記で説明したように、24時間常時起動は色々と準備が必要で面倒ですが、実現できるとかなり有効に使えるのも事実です。
とりわけPCを使わない夜間はプログラムの独占状態となります。
ただ通常のPCはサーバ用のPCと違い、24時間稼働し続けることを前提としているわけでないので、処理の途中でPC本体が壊れないかなどの心配があるのも事実です。
以前(Excel97の頃ですが)はAPIを使ってシステムのリソースを見て、値が一定以下になったら再起動なども試したこともありました。当時は(Excelが貧弱で?)うまくいきませんでしたが、今のハード、ソフト環境なら少しはPCに優しく使えるかもしれません。

カテゴリ:ツール・システム紹介