あるシートのセルを複数のシートにコピーする方法

このQ&Aのポイント
  • シート名「Sample」で指定した範囲のセルを、複数のシートにコピーする方法を教えてください。
  • コピー先のシートは「Start」と「End」で挟まれた位置にありますが、各ブックごとにシート名が異なります。
  • 「Start」と「End」シートを活用して、シート名を指定せずにコピーする方法を教えてください。
回答を見る
  • ベストアンサー

あるシートのセルを、複数のシートにコピーするマクロ

やりたい事としては、シート名「Sample」で指定した範囲のセルを、ブック内の複数シート(※)へコピーしたいです。 ※ 他にも同じ構成のブックがあり、そこでも汎用として使えるマクロが必要となっています。 各ブックでは、「Sample」というシート名は共通ですが、コピー先の複数シートのシート名は異なっています。但し、共通している部分としては、コピー先のシートを「Start」と「End」で挟んでいます。 シートの順序としては、  「Start」 「1」 「2」 「3」 「End」 「Sample」 のような構成で、各シートごとに1~3のシート名がばらばらです。 「Start」と「End」シートを活用して、シート名を指定せずにコピーする方法をご教示頂ければと思います。 宜しくお願い致します。

  • slan
  • お礼率14% (1/7)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 「Samplu」Sheetの範囲指定したセルを「Start」Sheet~「End」Sheetの 同じセル配置(セル番地)にコピーすれば良いわけですかね? 一応そういうコトだとしての一例です。 Alt+F11キー → 画面左下の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストし、「Sample」Sheetを範囲指定した後に、マクロを実行してみてください。 Sub test() Dim i, j, k, L, M, N As Long i = Selection(1).Row j = Selection(1).Column For k = 1 To Worksheets.Count If Worksheets(k).Name = "Start" Then M = k ElseIf Worksheets(k).Name = "End" Then N = k End If Next k For L = M To N Selection.Copy Destination:=Worksheets(L).Cells(i, j) Next L End Sub 参考になりますかね?m(_ _)m

slan
質問者

お礼

一発でやりたい事が実現できました。 ありがとうございました! もっと勉強しないと・・・。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Dim sh As Worksheet Dim flg As Boolean For Each sh In ActiveWorkbook.Worksheets   If sh.Name = "End" Then     Exit For   ElseIf sh.Name = "Start" Then     flg = True   ElseIf flg = True Then     'コピー作業     '・・・・・・・・・   End If Next

関連するQ&A

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • マクロで複数ブックのデータを一つのブックにコピー

    マクロ超初心者です。 1つのフォルダの中に複数のbook(sheetも複数)があります。 これを新しい1つのbookにまとめたいです。 sheetは「bookを開いた時に表示されるsheetだけ」を新しいbookにまとめたいです。 どなたかの回答に下記マクロがありました。 Sub consolid() Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く wb.Close '開いたブックを閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックをコピーしましました。" End Sub このマクロを使わせていただき、 これでいける!と思ったのですが、255文字以上のコピーが出来ません。 どのようにすればよいでしょうか?

  • シートをコピーするマクロ

    エクセルファイルを二つ開いているとします。 現在のアクティブシートを、もうひとつのファイルの最後のシートの後ろにコピーするマクロを教えてもらいたいのですが。 もうひとつのファイル名はそのつど変えることなく、汎用性がもてれば助かります。 以上、よろしくお願いいたします。

  • EXCEL 別シートのコピー(3)

    こんにちは。 こちらで以前こちらで質問をさせていただき、EXCELの別ブックのシートからコピーをしています。 元のブックのコピーを作り、そこに入力してもらい、元のブックにコピーをしています。(同じフォルダに入れて) Private Sub CommandButton1_Click() Dim myBook As Workbook Set myBook = Workbooks.Open(ThisWorkbook.Path & "\コピー元ブック.xls")  with workbooks("コピー元ブック.xls").worksheets("シート名").usedrange workbooks("貼り付け先ブック.xls").worksheets("シート名").range(.address).value = .value end with end sub ここでブックがない場合、そのブックを飛ばしてあるブックだけコピーしたい場合は、どうしたらいいでしょうか。いろいろやってみましたが、コピーできませんでした。 教えてください。

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • 複数ブックを纏めて1ブックの1シートずつにコピー

    仕事で大量の処理をしなければならず、マクロ化を考えています。 どなたかご教示頂けないでしょうか。 大変困っています助けて下さい。 既定ブック(9シート1,2,3,4,5,6,7,8,9と名前をつけています。レイアウトは全て同じです。)をコピーした後に複数のブック(1シートのみです。既定ブックとほぼレイアウトは一緒です。)を指定し、一部分コピーをし、既定ブックに1シートごとペーストし、(担当者により複数ファイル数は異なります)名前付けてブックを保存後閉じるという作業をマクロ化したいと思っています。 500ファイルを担当者別にコピー&ペーストしなければならないので、是非ご教示頂けないでしょうか。何卒お願い致します。 なお、ペースト箇所は以下になります。(全てセルの結合をしております。) 【貼付箇所】 コピー元:Range("G6:P13").Select    → コピー先:Range("G6:P13").Select  コピー元:Range("V5:AD11").Select   → コピー先:Range("V5:AD11").Select 【値貼付箇所】 コピー元:Range("AA23:AD27").Select  → コピー先:Range("AG26:AG30").Select コピー元:Range("G23:Z27").Select    → コピー先:Range("AH26:AH30").Select

  • 複数のブックのデータを1枚のシートにまとめるマクロ

    同じような質問は過去いくつかございますが、下記の条件を満たすことができず、 大変苦戦しております。 <条件> 1.フォルダ内すべてのエクセルで作成されたブックを、ブック名「全部」のsheet1に結合する。 2.結合するブックにはシートが複数あり、すべてのシートを結合するわけではなく、  シート名「社員」の、指定した範囲内「a10:t100」を結合する。 3.ブック名「全部」のsheet1のa列には結合元のブック名を表示する。 ご教授いただければ幸いでございます。 どうかよろしくお願いいたします。

  • シートをコピーするマクロ

    コピー先に関しては、例えば先頭から3つ目のシートの後からということなら、以下のように指定できると思います。 after:=Workbooks(Book1).Sheets(3) 同様の指定をコピー元にもすることができるでしょうか。 例えば、先頭から3つ目のシートから5つのシートをコピー対象とする、という指定は可能でしょうか?

  • 複数のシートを1つのシートにコピーしたい

    VBA初心者です。よろしくお願いします。 【状況】 1つのワークブックの中に『まとめ』という名前のシート、それ以外にコピーしたいシートが複数あります。 コピーしたくないシートもあります。 まとめを一旦クリアし、コピーしたいシートだけをコピーして貼り付けたいです。 まとめシートもコピーしたいシートも、データの入っているセルは"B5"から始まり、M列までの任意の行までデータが入っています。(B5:M?) 【やりたいこと】 コピーしたいシートのみ、データの入っている範囲をコピーして、まとめシートに貼り付けたい。 最終行を取得するVBAはいろいろなサイトを参考に書くことができたのですが、そこから"B5"までの範囲を指定してコピーをするという方法がいまいち分かりません。 参考にしたサイトはA1~特定の範囲のみ選択というものばかりで・・・。 稚拙ながら途中まで書いたコードです。 (1)Sub B5から最終セルの選択とコピー() (2)Range("B65536").End(xlUp).Offset(0, 11).Select (3)Range("B5", ※).Copy (4)End Sub ※に(2)で取得した最終セルを代入したいのですが方法が分からず・・・。 ここでまず躓いてしまっています。 どうかお知恵を貸して下さい。よろしくお願いします。

  • 【Excel 2003】複数のブックのシートを一つのブックにコピーにしたい

    お世話になっております。 【Excel 2003】を使っております。 複数のブックには、複数のシートがありまして、 複数のシートを一つのブックにコピーしたいのですが、 手作業ですと、大変時間がかかります。 現在は、一つ一つブックをあけて、シートのコピーで 一つの新しいブックにいれてます。 なにか、これを簡単にできる方法は、ありませんでしょうか? フリーのソフトでも、マクロでも、教えていただけたら 助かります。よろしくお願いします。