以前誰かが作成したExcelのマクロ、またはVBAを引き継いで使っていたら、いつの間にか正しく動かなくなってしまったということはないかな?
もしプログラムの中身を特にいじっていないとすると、考えられる原因はこちらです。
1. シート内の行または列を追加、削除した
これが一番よくある原因。マクロまたはVBAのプログラム上では大抵データ処理するにあたって、列または行の場所を指定して様々な処理を行うようになっているから、行、列の追加、削除を行うと大抵壊れるよ(笑)
行、列の追加、削除を行っても壊れないようなプログラムを作るのはとても困難で、それならばむしろプログラム上で行、列を追加、削除できないようにしておくのが本当は一番いい方法ですが、作る方はなかなかそこまで考慮しないかな。。
2. シートまたはファイル名を変更した
マクロ、VBA内でシート名やファイル名を固定して書き込んである場合(例えば Sheet(“合計金額”).cells(1, 2) みたいな感じ)、それが変わってしまうとうまく動きません。これもよくあるパターン。
3. プログラム内で読み込んでいる設定箇所のセルの情報を変更した
シート上に例えば「データを読み込む回数」が、ある特定のセルに記入されて、それをプログラム上で読み込んで処理内容を決定するという場合、そのセルに記入された数値を削除したり、何か文字に書き変えてしまったりすると正しく動きません。
なお、上記1~3については、もし正常に動いていた時のファイルのバックアップを持っていれば、それに戻せば問題なく動くはず!
4. VBA上で参照設定がなされていて、それに必要なソフトウェアまたはDLLがPCに存在していない。
これはなかなかやっかいで、Excel VBA上では、他のソフトウェアのパーツを利用してVBA独自機能とは別の機能を使うことが出来るよ。
参照設定とは、そのソフトのパーツがPCのどこにあるかを指定するのだけれど、そのパーツがPCからなくなったり、移動してしまうとパーツが使えなくなるため、プログラムが動かなります。
どのソフトが必要なのかがわかれば、それをインストールするなり、必要なファイルをコピーして参照設定で参照すればいいだけなんだけど、もしそれがわからないとなるとかなりやっかい。
対処方法としては、Excelの問題ではないので、Windowsのイメージの復元の機能を使って、正常に動いていた時点に戻してみるのが1つの方法だよ。
あとは、Excel VB Editorの参照設定で、参照不可になっている箇所を探して、そのファイルを探してPCにコピーして、参照設定をしなおせば動くかもしれないけど、ファイルコピーだけでは動かなかったりして、難しいところです。
また、そのソフトが普通にネット上からダウンロードしてインストールできるものであればまだいいけれど、誰かが作った独自のファイルだったりすると、正直復旧はかなり困難になります。
もし動かなくなってしまって何とか元通り動くようにしたい場合、お気軽にボクにご相談ください!

コメント