• 締切済み

全てのブックへのシートの挿入

同じフォルダーにある全てのブックに同じシートを3枚先頭から挿入したいのですが、どうすればよろしいでしょうか?ご教示お願い致します。

みんなの回答

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.9

それでは、エラーになっている分をすこしずつ短くしていきましょうか。 まずは、シートが3つあるのを2つにしてどうなるか。 だめならシートを1つにしてみてどうなるか。 ひとつずつ試してみるしかないですね。

rouka
質問者

お礼

色々とお教えいただいたにも関わらず、何故かうまく行きません。ご丁寧な解説を裏切るようで申し訳なく思っています。もう少し勉強した後で再度お聞きします。 ありがとうございました。

rouka
質問者

補足

お付き合いいただいてまことにありがとうございます。一つずつ試してみます。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.8

なぜできないのでしょうね。 シート名を半角文字にして試してもらえませんか。 よろしくおねがいします。

rouka
質問者

補足

やはりだめでした・・・ 同じエラーが出てしまいます。せっかく親切に教えていただいているのに申し訳ありません。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.7

No.6の訂正です。 「大文字」ではなく「全角文字」であることを確認願います。

rouka
質問者

補足

ご返答が遅れて申し訳ありません。全角文字で合っています。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.6

"Z1", "Z2", "Z3"の英数字が全て大文字ですが、シート名とマクロで合っていますか。 申し訳ないですが、もう一度、ご確認ください。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.5

追加したい3枚のシートが既にあるファイルとこれから追加したいファイルが同じフォルダにありますか。 そうでしたら、違うフォルダにして試してください。

rouka
質問者

補足

やはりだめでした。違うフォルダに入れると”インデックスが有効範囲にありません”エラーが出ます。元のブックにもコピーされていません。下の←部分がデバッグで黄色になった部分です。 Sub シートの挿入() mybook = ActiveWorkbook.Name dir名 = "C:\XXX\" book名 = Dir(dir名 & "YYY.xls") Workbooks(mybook).Activate Sheets(Array("Z1", "Z2", "Z3")).Copy←この部分が黄色になる Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Do While True book名 = Dir If book名 = "" Then Exit Do Workbooks.Open dir名 & book名 Workbooks(mybook).Activate Sheets(Array("Z1", "Z2", "Z3")).Copy Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Loop End Sub

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.4

Sheets(Array("1", "2", "3")).Copy Before:=Workbooks(book名).Sheets(1) このエラーが発生するのは、Arrayの後ろのシート名が違うか、最後のシート番号が違うかのどちらかです。 一度ご確認下さい。

rouka
質問者

補足

シート名を変えたところ、挿入したい3枚のシートがあるブックにその3枚のシートがコピーされてしまいました。さらに、そのブックがCloseしてしまって終わります。 Sub シートの挿入() mybook = ActiveWorkbook.Name dir名 = "C:\XXX\" book名 = Dir(dir名 & "YYY.xls") Workbooks(mybook).Activate Sheets(Array("Z1", "Z2", "Z3")).Copy Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Do While True book名 = Dir If book名 = "" Then Exit Do Workbooks.Open dir名 & book名 Workbooks(mybook).Activate Sheets(Array("Z1", "Z2", "Z3")).Copy Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Loop End Sub

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.3

エラー発生時にデバッグを押すと、エラーが発生した行が表示されます。 その行を教えてください。

rouka
質問者

補足

Sheets(Array("1", "2", "3")).Copy Before:=Workbooks(book名).Sheets(1) ↑ここの部分です。ちなみに、挿入したい3つのシートがあるブックを開いている状態からマクロを実行させるため、Workbooks(mybook).Open は削除しました。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

ディレクトリ名とシート名(2箇所)を変更すればOKです、 mybook = ActiveWorkbook.Name dir名 = "c:\test\" book名 = Dir(dir名 & "*.xls") Workbooks.Open dir名 & book名 Workbooks(mybook).Activate Sheets(Array("1", "2", "3")).Copy Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Do While True book名 = Dir If book名 = "" Then Exit Do Workbooks.Open dir名 & book名 Workbooks(mybook).Activate Sheets(Array("1", "2", "3")).Copy Before:=Workbooks(book名).Sheets(1) ActiveWorkbook.Save ActiveWorkbook.Close Loop

rouka
質問者

補足

ご丁寧にありがとうございました。早速試してみましたが、”インデックスが有効範囲にありません”と出てしまいます。マクロはあまり詳しくないのですが、問題点をお教え頂ければ幸いです。よろしくお願い致します。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

マクロを使うしかなさそうです。

rouka
質問者

補足

マクロの場合だとどのように書けばよろしいでしょうか?

関連するQ&A