- ベストアンサー
エクセルでコピー領域と貼り付け領域の形が違うエラー
- エクセルでセルのコピー&ペーストをする際に、コピー領域と貼り付け領域の形が異なるエラーが発生します。
- このエラーは、セルの数が異なるために起こる可能性があります。
- マクロを使用することで、エクセルシートのセル数を変更することができ、以前作成したマクロを使用できるようになります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
解決策1(推奨): 貼り付け先ブック(マクロが登録してある方)を,名前を付けて保存でファイルの種類を「Excelマクロ有効ブック」に変えて保存する ファイル名が「今のブック名.xlsm」に変わるので,今のマクロを修正する 解決策2: 「シートの全部のセルをコピーする」のと「シートをコピーする」のでは,まったく意味が違います。 新しいマクロの記録を開始する コピー元のブックを開き, シート名タブを右クリックして「移動コピー」を開始し コピーにチェックを入れ 移動先ブック(マクロブック)を指定してOKする 記録されたマクロを編集し,コピー元ブックをgetopenfilenameで指定できるように修正する。 解決策3:機能が劣るためあまりお奨めしません そもそも「全セルを選んでコピー貼り付ける」なんて乱暴なことをしているので,失敗します。 コピー元がどんな大きさなのか不明なのは勿論仕方がないことですが,せめて「大体この範囲」みたいなのをつかんで仕事をしてもバチは当たりません。 もしもそれで,実際にコピー元が「IV列よりも右にはみ出して確かにデータがある」と確認できたのでしたら,それはもう今の256列のマクロブックじゃそもそも納まらないってことです。その時は解決策1に移行するしかありません。 作成例: sub macro1() dim myFile myfile = application.getopenfilename() if myfile = false then exit sub workbooks.open filename:=myfile range("A:Z").copy ’たとえば最大でもZ列止まりなら。 thisworkbook.activate range("A1").select activesheet.paste end sub どーしても「全部のセル」を指定したくてしたくてシカタないなら, range("A:IV").copy のようになります。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
セル結合があるやセル結合の位置が違う件 貼り付け元でセル結合があり、貼り付け先でセル結合が無い場合も、貼り付け元のシートのセル結合した姿で張り付くようだ。 ーー 違うバージョンのブックの間でのコピー貼り付けが原因だと思う。 両者に差しさわりの無いのは、xlsの方のシートの最大行数x最大列数でコピーして(Cellsにしない)、2007の方で貼り付け先シートの基点セル(左上隅のセルを)A1セルにして、旨く張り付きませんか。 ーー 自信はないが、UsedRangeを使うことで、互換性は無いかな。 テストできてないのですが。 Sub test02() Set dest = Workbooks.Open("XXX.xls") 'コピー先のブック Windows("Book1").Activate ' 保存前のブックの場合 ActiveWorkbook.Worksheets("Sheet1").UsedRange.Copy dest.Worksheets("Sheet1").Range("A1") End Sub 保存してあるブックなら、そのブックを開いておいて、そのウィンドウのタイトル名にWindows("Book1").ActivateのBook1の部分を変えて、実行。どうなりますか。
お礼
ありがとうございました。 すでに解決済でしたが、勉強になりました。
- kmetu
- ベストアンサー率41% (562/1346)
> セルの結合をした記憶はございませんが、勝手に結合されている事があるので しょうか? 勝手に結合されていることはないと思います。 コピーのコードがどうなっているのかわかりませんが Cells.Copy とかになっているのでしたら セルの指定をRange("A1:IV65536")というような指定にしてみてはいかがでしょう。
お礼
ありがとうございました。 おかげざまで、解決いたしました。
- kmetu
- ベストアンサー率41% (562/1346)
セルの結合とかしているところがあると、そのようなエラーが出ることがありましたがそういことはありませんか。 セルのコピー貼り付けではなくシートそのものをコピーしてみてはいかがでしょう。
補足
回答ありがとうございます。 シートそのものをコピーしようとしても、同様のエラーになります。 シート全体におけるセルの数がエクセル2003とエクセル2007で、数が違うから なのかと思ったりもしております。 セルの結合をした記憶はございませんが、勝手に結合されている事があるので しょうか?
- mar00
- ベストアンサー率36% (158/430)
貼り付けるときにセルA1に貼り付けてみてはどうでしょうか。 できなかったらすいません。
補足
ご回答ありがとうごいます。 ただ、同様のエラーメッセージが出て、できないです。
お礼
ありがとうございます。 range("A:Z").copy ’たとえば最大でもZ列止まりなら。 を参考にマクロを訂正したところ、上手にできました。