[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ワークシートを1枚に結合』(1枚)
1つのブック内の複数のワークシートを1枚に結合したいのですがどうしてもエラーになってしまいます。
下記のマクロはネットでさがしました。
Sub ワークシートを1枚に結合()
Dim intLoop As Integer
Application.ScreenUpdating = False
Worksheets.Add before:=Worksheets(1), Count:=1
For intLoop = 2 To Worksheets.Count
Worksheets(intLoop).Select
Range("A1").UsedRange .Select
If intLoop > 2 Then
Selection.Resize(Selection.Rows.Count - 1).Offset(1).Select
End If
Selection.Copy
Worksheets(1).Select
If intLoop = 2 Then
Range("A1").Select
Else
Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(1).Select
End If
ActiveSheet.Paste
Next intLoop
Application.CutCopyMode = False
Worksheets.Select
Range("A1").Select
Worksheets(1).Select
Application.ScreenUpdating = True
MsgBox "「" & Worksheets(1).Name & "」に全ワークシートのデータをまとめました。"
End Sub
.Selectの部分が黄色くなり参照が不正または不完全ですとでてしまいます?
どこから見つけてきたのか知りませんが
そのコードの元コードでは、該当部分が
>Range("A1").CurrentRegion.Select
になっていますし
もっと丁寧にコメントがつけてありますよ。
インストラクターのネタ帳 『複数のワークシートを1枚にまとめる』 http://www.relief.jp/itnote/archives/001729.php
(HANA)
また、リンク先へは注意事項も書いてありますので ご覧になっておかれるのがよろしいかと思います。
コードがご希望の動きをしない場合は 1枚さんがお使いのシートのデータ状況を ご説明いただくのが良いかもしれません。 どうやらそのマクロは 「これまでの学習の集大成」 として作られたコードの様ですので。
(HANA)
提示までありがとうございます。 少々自分のとのデーターが一致しないようなので書かせていただきます。
Book内のワークシート全部の範囲A7:K34をSheet1へ 1:マクロ実行後に新規ワークシートSheet1を自動作成。 2:各ワークシートのA7:K34をShee1の1枚にまとめる。 ワークシートの名前は追加しながら名前を付けていくので 毎月、ワークシート数が違います。(1枚)
少し確認させて下さい。 「範囲A7:K34を」というのは たとえこの範囲にデータがなくてもA7:K34の範囲 と読み取って良いのでしょうか?
それとも、 7行目から順番に入力されるが 最大34行目までしか入力がなく このうち入力がある範囲を と読むのでしょうか?
小さなサンプルで良いので データ状況がどのようになているのか 載せてみてもらえませんか?
たとえば↓の方の様に。 [[20090206082832]]『セルの検索』(りんご)
2シート(2パターン)くらいのデータの状況と それらをまとめた希望結果図を載せてもらえると良いと思います。
(HANA)
質問の返答で、たとえこの範囲にデータがなくてもA7:K34の範囲です。 説明不足でした。下記に2つのワークシートがあったとして 新規Sheet1にコピーをの例を書かせていただきました。(仮に2つで本来は複数です)
┌─┬────┬────┬────┐┌─┬────┬────┬────┐ │ │ A │ B・・ │ K ││ │ A │ B・・ │ K │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │ 7│ │ │ ││ 7│ │ │ │ ├─┼平成21年┼────┼────┤├─┼平成21年┼────┼────┤ │ 8│ │ 苦情 │ 処理 ││ 8│ │ 苦情 │ 処理 │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │ 9│ 2/1 │ 1 │ NG ││ 9│ 2/16 │ 3 │ OK │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │10│ 2/2 │ 3 │ NG ││10│ 2/18 │ 5 │ NG │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │ :│ │ │ ││ :│ │ │ │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │ :│ │ │ ││ :│ │ │ │ ├─┼────┼────┼────┤├─┼────┼────┼────┤ │34│ 2/15 │ 10 │ ││34│ 2/20 │ 30 │ │ └─┴────┴────┴────┘└─┴────┴────┴────┘
新規Sheet1へ ┌─┬────┬────┬────┐ │ │ A │ B・・ │ K │ ├─┼────┼────┼────┤ │ 1│ │ │ │ ├─┼平成21年┼────┼────┤ │ 2│ │ 苦情 │ 処理 │ ├─┼────┼────┼────┤ │ 3│ 2/1 │ 1 │ NG │ ├─┼────┼────┼────┤ │ 4│ 2/2 │ 3 │ NG │ ├─┼────┼────┼────┤ │ :│ │ │ │ ├─┼────┼────┼────┤ │ :│ │ │ │ ├─┼────┼────┼────┤ │28│ 2/15 │ 10 │ │ ├─┼────┼────┼────┤ │29│ │ │ │ ├─┼平成21年┼────┼────┤ │30│ │ 苦情 │ 処理 │ ├─┼────┼────┼────┤ │31│ 2/16 │ 3 │ OK │ ├─┼────┼────┼────┤ │32│ 2/18 │ 5 │ NG │ ├─┼────┼────┼────┤ │ :│ │ │ │ ├─┼────┼────┼────┤ │ :│ │ │ │ ├─┼────┼────┼────┤ │56│ 2/15 │ 10 │ │ └─┴────┴────┴────┘ こんな感じですが。。(1枚)
コピーする範囲が決まっているなら、 シンプルに書けると思います。
'------
Sub コピー()
Dim i As Long
Worksheets.Add before:=Worksheets(1), Count:=1
For i = 2 To Worksheets.Count
Sheets(i).Range("A7:K34").Copy Sheets(1).Range("A" & 28 * (i - 2) + 1)
Next
MsgBox "「" & Worksheets(1).Name & "」に全ワークシートのデータをまとめました。"
End Sub
'------
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.