みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAでsheetのコピー

初めまして、宜しくお願い致します。環境:WindowsXPSP3EXCEL2010やりたい事Book1に複数の名前の付いたsheetがあります。sheetの数は可変です。このBook1のsheetをVBAから新に作成するBook2のsheet1に纏めたいのですが、Book2のsheet1だけに纏めたいのですが、Book2のsheet1の名前は、固定で構いません。Book1の一番初めのsheetにコピーする時だけ3行目にある見出しだけは、Book2のsheet1に付けたく。それ以外のBook1のsheetは、デターだけをコピーしたいのですが、作成したマクロでは、実行時エラーがでます。【実行時エラー'9'】【インデックスが有効範囲にありません】とでます。次の部分です。「Sheets("mySheetName(i)").Copy Before:=Workbooks("Book1").Sheets("Sheet1")」また、Book2のsheet1の名前は固定で構いません。しかし、マクロの記述の仕方も判りません。どなたかご教授願います。何卒宜しくお願い申し上げます。

投稿日時 - 2012-09-08 11:30:49

QNo.7686705

すぐに回答ほしいです

質問者が選んだベストアンサー

1枚目以外のシートの「どこからどこまで」のセル範囲をコピーしたいのか、不明ですね。
どのシートもおなじ表体裁なので、単純にどれもいっしょのセル範囲をコピーするだけでいいのか
行数が不定なのでイチイチ調べなきゃならないのか、調べるならどこをどう調べたら正しく最終行が判るのか
そういったあなたの具体的な状況に照らして、キチンとしたマクロを考えなきゃいけません。


簡単な作成例:
各シートは4行目以下がデータ範囲になっている
各シートはA列からI列まで表範囲になっている
各シートはA列の一番下にデータがあるセルまでがデータ範囲になっている

sub macro1()
 dim i as long
 dim w0 as workbook
 dim s as worksheet
 set w0 = activeworkbook

’1枚目シートから貼り付け先のブックを作る
 w0.worksheets(1).copy
 set s = activesheet

’2枚目以降のデータをコピーする
 for i = 2 to w0.worksheets.count
 with w0.worksheets(i)
  .range("A4:I" & .range("A65536").end(xlup).row).copy destination:=s.range("A65536").end(xlup).offset(1)
 end with
 next i
end sub

投稿日時 - 2012-09-08 12:08:28

お礼

皆さん、どうも有難う御座います。別の方法で解決しました。しかし、皆さんのコメントでヒントをつかみ無事解決しました。

投稿日時 - 2012-09-23 05:07:37

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問