【VBA】シートコピー時の注意点

どうも、はじめまして。今年入社した開発部のSです。
業界経験としては4年となり、語れる知識が多い訳ではないのですが、
私の躓いた所を中心に紹介していきたいと思います。
 
私は以前にVBAでテキストファイルを読み込み、エクセルファイルを自動で
作成するツールを作成していました。
その際に、テンプレートとなるエクセルファイルからシートをコピーする動作で発生した問題です。
 
今回紹介する問題は、VBAでワークブックを新規作成し、
他のエクセルファイルからシートをコピーするとエラーが発生するという物です。
エラーの内容としては、列数や行数が足りない旨のメッセージが出力されていました。
保存形式は「xlsx」で保存してたので、エラーとして列数や行数が足りないと
出る事が理解できませんでした。
作成されたファイルもきちんと「xlsx」となっていた為、原因を調べるのに時間を取られた経験があります。
 
原因としてはエクセルのデフォルトの保存形式が「xls」になっていた事が原因でした。
Excel2007以降でVBAを使う場合に、ワークブックを新規作成すると
デフォルトの保存形式を元にワークブックが作成されます。
その為、「xlsx」形式のファイルからシートをコピーすると、
行数や列数が少ない「xls」形式のワークブックに行数や
列数が多い「xlsx」形式のワークブックがコピーされる事になるので、
列数や行数が足りないとエラーが発生します。
 
対策としては、ワークブックの作成前に保存形式を「xlsx」に変える事で正常に動作します。
もしくは、ワークブックを新規作成せずに、コピー元のワークブックをコピーすれば正常に動作します。
 
原因が分かれば、解決するのはたいした手間でもないのですが、
エラーメッセージから発生した原因を調べるのに苦労した記憶が
あるので紹介させていただきました。お役に立てれば幸いです。