Excel VBAではまったところ

Excel VBAでマクロシートをコピーすることはできない。たぶんマクロウイルスを防ぐためだろうと思う。なんとかマクロを他のブックにコピーすることはできないか考えていると、マクロシートではなくシート内部にコードを記述すれば、シートと一緒にマクロもコピーされることが分かった。
コピーされるマクロの中ではADOを使ってデータベースからデータを呼び出すような処理が書いてあったが、コピー先のブックにはADOへの参照設定がなされていない状況だった。マクロを埋め込んでいるシートをコピーしただけでは参照設定に関するエラーは発生しないが、そのシートになんらかの処理を行おうとすると(シートを並び替えるためにmoveメソッドを使うなど)、アプリケーション定義のエラーというメッセージが出てしまう。原因が分からずにしばらく考え込んでしまった。

ADOの参照設定ではいつも少し悩んでしまう。社内ではoffice2000を使っており、ADOのバージョンも2.0、2.1、2.6などが入っている。なぜか同じOffice2000を使っている筈なのに、微妙に収録されているバージョンが異なるみたいで、たまにエラーで動かないことがあるのでやっかいだ。