エクセルマクロで複数シートのコピー

このQ&Aのポイント
  • エクセルマクロを使用して複数のシートをコピーする方法について説明します。
  • 複数のシートが含まれるエクセルファイルから、各シートの解答欄をコピーし、集計用の新しいシートに貼り付ける方法について説明します。
  • 初心者向けに、簡単なコード例と手順を提供します。新しいシートの挿入と繰り返し処理を使用して、シートのコピーと貼り付けを行います。
回答を見る
  • ベストアンサー

エクセルマクロで複数シートのコピー

マクロ初心者です。お世話になります。 アンケート集計に関するマクロの記述を色々調べたのですが、どうもよくわかりません。お手伝いいただけると助かります。 【ファイル前提】 (1)ファイルには複数のシート(最大で100シート)があります。(シート名は回答、回答(2)、回答(3)というような感じです。 (2)各シートともアンケート質問及び回答で構成され、どのシートも同じ形式です。 【実施したい作業】 (1)各シートの解答欄(C2:C100)をコピーし、新しいシート(集計用)にコピーをしたい。 (2)回答が列になっているので、行列を入れ替えて集計用シートに順番に貼り付けたい。 色々検索した結果、新しいシートを挿入して、繰り返し処理をすればいいような感じはわかるのですが、初心者のため、コードがよく読めません・・・ これから勉強します。よろしくお願いいたします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Sub 集計処理() Dim 集計シート As WorkSheet Dim 記録行位置 As Long Dim 回答シート As WorkSheet '既存の集計シートがあれば取得する On Error Resume Next Set 集計シート = ThisWorkbook.WorkSheets("集計") 'もし、エラーでなければ既存シートがある If Err.Number = vbNormal Then     集計シート.Cells.ClearContents '以前の内容をクリア Else     '既存シートが無ければ集計シートを新規に作る     Set 集計シート = ThisWorkbook.WorkSheets.Add     集計シート.Name = "集計" End If On Error GoTo 0 '各シート毎の処理 For Each 回答シート In ThisWorkbook.WorkSheets     '集計シートは対象にしない     If 回答シート.Name <> "集計" Then         '記録位置を更新する         記録行位置 = 記録行位置 + 1         'シート名と回答を記録する         集計シート.Cells(記録行位置, 1) = 回答シート.Name         '行列を入れ替えてコピー         回答シート.Range("C2:C100").Copy         集計シート.Cells(記録行位置, 2).PasteSpecial , , , True         'コピーモード終了         Application.CutCopyMode = False     End If Next End Sub こういう感じです。

nonstar
質問者

お礼

早急なご回答ありがとうございます。この式でマクロを実行すると、私の思っていたのほぼ近い状態のものが出来上がります。ありがとうございます。ただ、こちらの問題で、回答のセルが他のシートからのリンク貼り付けとなっているため、その辺をうまく処理しなければいけないようです。もし、お時間があったら、その方法(コピぺは値のみで、行列入れ替え)もご教授いただければ幸いです。でも、明るい未来が見えてきたような気がします。がんばってみます。ありがとうございました。

その他の回答 (1)

  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.2

回答ファイル名  回答(1).xls  回答(2).xls  回答(3).xls 集計ファイル名  集計.xls 一度に考えてもできないので 二つの段階で考えましょう。 1.各列のものをファイル名 集計.xls にコピーする 2.行列を入れ替える。 操作方法 1.各列のものを集計ファイル名にコピーする  各セルの値は以下のようになります。  1.C列に回答(1).xlsのデーターをコピー   C2に   ='[回答(1).xls]Sheet1'!$C2   をコピー   C3に   ='[回答(1).xls]Sheet1'!$C3   C100までおこなう。  2.d列に回答(2).xlsのデーターをコピー   d2に   ='[回答(2).xls]Sheet1'!$C2   をコピー   d3に   ='[回答(2).xls]Sheet1'!$C3   d100までおこなう。 2.行列を入れ替える。 集計.xlsのSheet1全てを選択してコピー   貼り付け時に形式を選択して貼り付け    行列を入れ替えるに チェック    貼り付け 値(V)   を選択して、OK 以上 以上

nonstar
質問者

お礼

早急なご回答ありがとうございます。これをマクロの式で書くとどんな感じなんでしょうか?ぜひ参考にしたいと思います。ありがとうございます。

関連するQ&A

  • エクセルのマクロで複数のシートのコピー

    エクセル初心者です。 私の場合、3から5社のフォルダが作ってあり、それぞれ、エクセルで、日々の入出庫の管理&集計をしています。 3社のフォルダより、指定ファイル・シート内のデータをピボットテーブル用集計シートにコピー貼り付けしたいのです。 ピボットテーブル機能で複数のシートを選択するのはシート数が多すぎて手間。 マクロによって、集計シートにまとめてから、ピボットテーブル機能を使いたい。 各社シートのフォームは同じ.。 日付けを指定してコピー貼り付けしたい。 集計シートに各社連続で貼り付けがしたい。 集計シートの最初の行だけにタイトルを表示したい。 なるべく、フォームの行・列幅は変更しないようにしたい。 貼り付けたデータのユーザー名がわかるようにしたい。 なにとぞ、お力をお貸しください。 よろしくお願いいたします。 エクセル2003

  • マクロで複数シートを1つにまとめ、転記する方法を教えてください。

    マクロ初心者のため、どなたかご教示ください。 EXCELで以下の3sheetあるアンケートを複数名(300人近く)に送りました。 sheet1 sheet2 sheet3 表紙  設問  設問2 (1)sheet2の設問のみ1つの集計専用のブックにまとめたいです (2)(1)でまとめたブックで、アンケート結果を回答ごとに振り分けたいです。 Aさんのアンケート   A   B   C 1 質問  回答A 回答B 2 質問1  1   △ 3 質問2  3   ○ 4 質問3  5   △     Bさんの回答   A   B   C 1 質問  回答A 回答B 2 質問1  1   ○ 3 質問2  5   ○ 4 質問3  5   △ 上記のアンケート内容を以下ように振り分けたいです。 回答A集計 A   B   C 1 質問  Aさん Bさん 2 質問1   1  1 3 質問2   3  5 4 質問3   5  5 回答B集計 A   B   C 1 質問  Aさん Bさん 2 質問1   △  ○ 3 質問2   ○  ○ 4 質問3   △  △ のように、質問項目は残したまま、回答A、Bを振り分けたいのですが、 何かいい方法はございますか?? 説明がへたで申し訳ございません。 よろしくお願いいたします! sheet3  

  • マクロで複数のエクセルブックにシートを挿入する

    フォルダ<<C:\Documents and Settings\MyPC\デスクトップ\Test>>の中に、あるアンケートに対する回答の"Book01.xls"~"BookXXX.xls"のエクセルファイルがあり、デスクトップ直下にその回答を一覧に並べるための"集計用ファイル.xls"があります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"でシート名"Sum"のA1からA50に入力されている数値を"集計用ファイル"のA列から順に右へ右へと転記したいと考えています。(アンケートのエクセルブックは複数のシートから成っていますが、全ての答えが"Sum"シートのA1からA50に集計されるように作成してあります。) ここで、一つ大きな問題がありまして集計用"Sum"シートを削除している回答用ブックが複数あります。(ロックまでかけていたのに…) ■質問 上記のケースで、"Sum"シートが削除されていた場合に追加するマクロを組みたいのですが、どのようなプロシージャーになるのか分かりません。この復活させたい"Sum"シートの原本は"集計用ファイル.xls"にある状態です。 VBA初心者なのですが、過去の質問を調べたり、べつの投稿で質問しながら下記の所まできましたが、また独力で解決できないので投稿させて頂きました。よろしくお願いいたします。 Sub 転記マクロ() Dim WorkPath As String Dim Target As String Dim MaxColumn As Long Application.ScreenUpdating = False WorkPath = "C:\Documents and Settings\Zawa\デスクトップ\Test" Target = Dir(WorkPath & "\*.xls", vbNormal) MaxRow = 50 Do While Target <> "" Workbooks.Open WorkPath & "\" & Target Workbooks(Target).Sheets("Sum").Range("A1:A50").Copy _ ThisWorkbook.Sheets("Sum").Cells(MaxColumn, 1) MaxColumn = MaxColumn + 1 Workbooks(Target).Close SaveChanges:=False Target = Dir() Loop MsgBox "転記が終了しました。" End Sub

  • 表を別のブックのシートへ連続してコピーするマクロ

    マクロ初心者です。 Sheet1のA1からC3に入力されているデータがあります。 それを別のブック(集計)のSheet1のA2からC4へ値のみコピーを行いたいと思っています。 2回目以降は、Sheet1のA1からC3のデータをA5からC7というように前回コピーした内容に上書きしないように連続してコピーを行いたいのですがそのようなことは可能でしょうか。 マクロで実行したいです。 ご教授よろしくお願いいたします。

  • EXCEL(マクロ機能あり)のコピー

    お世話になります。 現在、マクロ機能のあるEXCELファイルを別のPCへコピーし実行すると 思うような結果が返ってこない。 Sheetが2つあり、 ・Sheet1はDBより取得 ・Sheet2はSheet1を参照し集計 というように構成しています。 自分のPCでは全て問題なく実行できるが、 別のPCではSheet1のデータ取得は実行でき、Sheet2の参照集計ができない。 という点で悩んでいます。 お力添えをお願いいたします。 考えられる問題点は、 1.ファイルの作成時にマクロ機能を別のEXCELファイルよりコピー(ボタンの機能など)し、マクロの登録を行ったので参照がうまくいっていない。 2.マクロのコピーの仕方が正しくない 3.Excelファイルに何か設定をしなければならない(参照設定など) と考え調べていたのですが、解決に至りませんでした。 どなたかご教授をお願いいたします。

  • エクセル・シートコピーの際のマクロについて

    教えてください。 エクセルで、マクロを組んでいる月毎の勤務表を1つのシートとし、月が替わるたびにシートコピーをし増やしていきましたら、1つのファイル内にシートが多くなった為に、ファイル動作(保存等)が遅くなりました。 そこで、ファイルのコピーをし、別ファイルで管理し、再度、同じように作業していこうかと思っております。 しかし、ファイルのコピーをし、そのファイル内のマクロを実行しましたら、何故か、コピー元のファイルも一緒に開いてしまいます。マクロ情報がコピー元にあるからかと思いますが、このマクロ実行時にファイルが開かないようにする方法はありますか? よろしくお願い致します

  • エクセルでシートコピーするマクロについて

    マクロ初心者です。宜しくお願いします。 エクセルで一つのSheet1があります。そのSheet1には、一覧表があります。マクロを実行することで、Sheet1の後ろにSheet2を作成して、Sheet1と同じ一覧表をコピーして表示できるようにし、それを、マクロを実行すれば、ワークシートが一枚追加され、Sheet2のシート名になり、シートを追加する度にシート名が、Sheet3、Sheet4、Sheet5となるようにしたいです。 分かりづらい説明ですが、宜しくお願いします。

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

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

  • エクセルで別ファイルのシートの貼り付けマクロ

    マクロ初心者です。よろしくお願いします。 excelファイルのシートに同じシート名csvファイルのデーターの貼り付けをしたいのです。 ↓詳しくは。 excelファイルがあります。(ファイル名:全社) シート名=集計、1、2、3、4、5、6、7、8、9、10(固定) csvファイルがあります。1~始まり数は変動(1~3だったり、1~7とか) 1ファイル=1シート、ファイル名とシート名は同じ excelファイルのシート(1~10)に、開いたcsvファイルの同じシート名(1~10)のデータを貼り付けたい。 毎回コピー・貼り付けの繰り返し作業なので、マクロ作成を試しているのですが、うまくいきません。 教えてください。お願いします。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。