- ベストアンサー
エクセルマクロで複数シートのコピー
- エクセルマクロを使用して複数のシートをコピーする方法について説明します。
- 複数のシートが含まれるエクセルファイルから、各シートの解答欄をコピーし、集計用の新しいシートに貼り付ける方法について説明します。
- 初心者向けに、簡単なコード例と手順を提供します。新しいシートの挿入と繰り返し処理を使用して、シートのコピーと貼り付けを行います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 こういう感じです。
その他の回答 (1)
- LHS07
- ベストアンサー率22% (510/2221)
回答ファイル名 回答(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 以上 以上
お礼
早急なご回答ありがとうございます。これをマクロの式で書くとどんな感じなんでしょうか?ぜひ参考にしたいと思います。ありがとうございます。
お礼
早急なご回答ありがとうございます。この式でマクロを実行すると、私の思っていたのほぼ近い状態のものが出来上がります。ありがとうございます。ただ、こちらの問題で、回答のセルが他のシートからのリンク貼り付けとなっているため、その辺をうまく処理しなければいけないようです。もし、お時間があったら、その方法(コピぺは値のみで、行列入れ替え)もご教授いただければ幸いです。でも、明るい未来が見えてきたような気がします。がんばってみます。ありがとうございました。