本題の対処法については、最初の解決策とかにだけ書いてます。大した事は書いてませんが…時間が惜しい人は解決策だけ見ればいいと思います。
解決策とか
VBAでエラーの原因を調べるのによく使うのは、基本的にはデバッグモードで動かして、エラーがでた箇所の値をDebug.PrintとかMsgBoxとかでみていく方法です。
こういう時に変数定義でクラス(StringとかLongとか)を明確にしておくと、比較的原因が特定しやすいです。配列の処理をするのに文字列入れたとか、数値の処理に文字列いれたとかに気づきやすい。
ちなみに、オートメーションエラーはPCへの負荷が大きい時に出る事が多いそうで、処理自体に欠陥があるというよりは、処理しきれずにエラーが出るみたいです。このエラーは大抵デバッグモードにしてエラー箇所を動かすと直ります。
それで直らない時は、エラー処理を一旦コメントアウトしてコンパイルすると直ります。それでも直らない場合は…色々試すしかないです。
こんな感じで初心者だと対処が難しいエラーが出る事が多々ありますので、VBAに詳しい人が居ない、頼れないとかだと、色々苦労します。
苦労した話
他の言語を業務で使った経験が今のところほぼ皆無なので、VBAに限った話かは分かりませんが、保守してて思う事は、とにもかくにもエラーの原因が本当に分からないことが多い点です。
「致命的なエラーです。」とか「オートメーションエラーです。」とか出た時は、これという解決策があまりでないので、かなり苦労します。ネット検索で見つかった方法を試すうちになんとか解決することもありますが疲弊することが多いです。
問い合わせ対応する時とか、大体はエラーメッセージのままで待っといてもらって、調べた後でメッセージ閉じていい良いとか伝えたりしますが、待たせるので大抵イライラされたりウンザリされたりで割とへこみます。
私の態度が悪いのもあるかもですが…
態度悪くても対応がスムーズだとそんなに機嫌悪くされたりしないので、せめてスムーズに対応できる環境が欲しい。