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