Excelのブックにある任意のシートを別のブックにコピーしようと思ったら、
移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー]コマンドと[貼り付け]コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。
というエラーが出てコピーできなかったことはありませんか?以下のようなダイアログで表示されていると思います。
エラーメッセージを読んでもいまいちピンと来ないし、意味がわからないですよね。自分もそうでした。でも、ちょっとした一手間でコピーできるようになりますので、その対処法をご紹介します。
コピーできない原因
このエラーが出た場合は、コピー元とコピー先のExcelブックのバージョンを確認してみましょう。コピー元は「.xlsx」という拡張子で、コピー先は「.xls」という拡張子になっていませんか?
拡張子「.xls」はExcel97-2003ワークシートといって、古いExcelでも開けるよう、互換性を保った形式になっています。そして「.xlsx」の方は、Excel2007以降で使われるようになった新しい形式で、ファイルサイズもかなり小さくなりました。中身はZIPで圧縮されたXML形式になっています。
新しい形式のエクセルシートは、そのままでは古い形式のブックにはコピーができないために、エラーとなってしまうようです。
もうひとつの判断方法として、「互換モード」表記があります。上記キャプチャ画像を見ていただくとわかりますが、上の古い形式の方ではタイトルバーに「互換モード」と表示されています。この「互換モード」と表示されていないブックから、「互換モード」と表示されているブックへのコピーがエラーになります。
コピーするための対処法
方法1:コピー先も新しい形式にする
新しい形式から古い形式にコピーができないのであれば、コピー先も新しい形式にしてしまえばいいのです。コピー先のExcelブックを開き、名前をつけて保存で「Excel ブック(*.xlsx)」を選択して保存するだけで、新しい形式で保存されます。
保存した後は一度Excelを終了させて、新しい形式の方で開き直してからシートのコピーを試してみてください。
方法2:コピー元を一旦古い形式にする
方法1とは逆パターンで、コピー先のExcelブックを新しい形式で保存できない場合、コピー元を一旦古い形式で保存してしまえば、コピーできるようになります。コピー元のExcelブックを開き、名前をつけて保存で「Excel 97-2003 ブック(*.xls)」を選択して保存します。
保存した後は一度Excelを終了させて、古い形式の方で開き直してからシートのコピーを試してみてください。コピーした後は、コピー元の古い形式は削除してしまって大丈夫です。
そもそもエラーメッセージがわかりにくい
Excelに限らず、Office製品はいずれもエラーメッセージが非常にわかりにくいと思います。直接「これが原因!」というエラーではなく、今回のようにトンチンカンなメッセージを表示されても、何が原因なのかがさっぱりわかりません。
でも実はこれ、Excelブックの古い形式と新しい形式で、1シートあたりが持てる最大行数・列数に関係しているのです。古い形式(Excel97-2003形式)では1シートあたり65,536行、256列まで扱えることに対し、新しい形式では1,048,576行、16,384列まで扱うことができるようになっています。なので、新しい形式から古い形式にコピーしようとすると、行数・列数が入り切らなくて、あんなエラーメッセージが表示されるという訳です。
もっとシンプルに「行数または列数が大きすぎてコピーできません」というエラーメッセージなら、もうちょっとわかりやすいのにね。
ちなみに、メッセージに書いてある通りに新しい形式のコピー元シート全体を「コピー」し、古い形式のコピー先シートに「貼り付け」をしたら、行の高さと列の幅がコピーされただけで、中身は真っ白でした。ダメじゃん!
さいごに
この現象はExcel2013とExcel2016、Excel2019の3バージョンで確認していますが、おそらくExcel2007やExcel2010でも同様じゃないかと思われます。バグや不具合の類ではなく、ただ単にファイルの形式が変わったこと(新バージョンで扱える量が増えたこと)による弊害なんじゃないかな。
コメント