
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
'同じBookの選択されたシートが対象
'シートの並び順で全部または一部データを「Summary」シートに集約
'出力=「Summary」シートは先頭に置く
'「xCopyRows」にコピーする行数を指定、0は全体
'データの最終行は「列:A」、最終列は「行:1」で決める
'「xHead」にヘッダの行数を指定、0以外はヘッダあり、0はヘッダなし
'ヘッダは対象の先頭シートからコピーする
Sub Summary_SelectedSheetsActiveWindow()
Const xCopyRows = 0
Const xHead = 1
Const xNameSummary = "Summary" '先頭に置く
Dim xFirst As Boolean
Dim xSh As Worksheet
Dim xLast As Long, xRight As Long
Dim xLast_To As Long
Dim jj As Long
Dim kk As Long
Dim SheetObj As Object
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xFirst = True
'複数シートのデータを「Summary」へコピー
For Each SheetObj In ActiveWindow.SelectedSheets
If (xHead <> 0) And (xFirst) Then
'列見出しをコピー
SheetObj.Range("1:" & xHead).Copy Worksheets(1).Range("A1")
xFirst = False
End If
If xCopyRows = 0 Then
xLast = SheetObj.Cells(Rows.Count, 1).End(xlUp).Row
Else
xLast = xCopyRows + xHead
End If
xRight = SheetObj.Cells(1, Columns.Count).End(xlToLeft).Column
'データをコピー
If xLast > xHead Then
xLast_To = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
If xLast_To > 1 Or xHead <> 0 Then
xLast_To = xLast_To + 1
End If
SheetObj.Range(SheetObj.Cells(1 + xHead, 1), SheetObj.Cells(xLast, xRight)).Copy
Worksheets(1).Cells(xLast_To, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
'MsgBox (SheetObj.Cells(1 + xHead, 1))
End If
Next SheetObj
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
この回答への補足
ゴメンナサイ(>_<)
私の勘違いで、
最初にSummaryシートを作成しなければならないのですね。
そうすると・・・
最初にSummaryシートを自動で作るコードを入れようとしたのですが、
Dim newSh As String
Dim Sh As Worksheet, myFlag As Boolean
newSh = "Summary"
myFlag = False
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name = newSh Then
myFlag = True
Exit For
End If
Next Sh
If myFlag = False Then
ActiveWorkbook.Worksheets.Add(before:=Worksheets(1)).Name = newSh
End If
としたのですが、選択しただけ枚数が出来るのと、アクティブシートが変わるためかデータの移行がうまくいかないのです。
あと、Summaryシートが存在する場合は、いったんSummaryシートのデータを削除したいです。
どうすれば良いでしょうか?よろしくお願いします。
ありがとうございます!
一番最初に貼り付けられるのですね。新しいシートが作られるのかと思ったのですが、それはそれでOKです。助かりました。
ソースを見ても今の自分には???でして・・・こんなに複雑だったのですね。ホントに助かりました。ありがとうございました。
ただ、実はファイルの中には
・各シートの1行目余計なデータ(集計行)があるシートがある
・K列L列にデータを使ってピボットが作られている
ものがあります。
この有無はファイル毎に決まっているので、最初に削除しようと思い、
教えて頂いたソースのDim SheetObj As Objectの後に
Dim SheetObj2 As Object
Dim bunki As Integer
bunki = MsgBox("KL列と1行目を削除しますか", vbYesNo)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xFirst = True
For Each SheetObj2 In ActiveWindow.SelectedSheets
'bunkiがyesなら削除
If bunki = vbYes Then
Range("k:l").Delete
Range("1:1").Delete
End If
Next SheetObj2
としたのですが、なぜか同じデータを何度か貼り付けてしまいます。
それ以外では問題ないのですが・・・
もしよろしければ、何か対策を教えて頂けないでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ初心者の質問です。 1.シートを開いてマクロを実行する場合、アクセスキーでAlt-L-PMとタ 2 2022/12/23 10:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのワークシートが重く...
-
Excel:グラフの元データをグル...
-
複数のシートのセル内容をひと...
-
エクセルでのチケット販売POSデ...
-
Excelの行削除について。 sheet...
-
Excel2003 ワークシートをリン...
-
EXCEL2003 マクロでのデータコ...
-
エクセルにて別シートの値を参...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルで入力→日付を自動判別...
-
Excelで複数のシートの合計を別...
-
エクセル 毎日更新する表のデ...
-
Excelで数値→文字列変換で指数...
-
エクセルにおける、グラフの指...
-
Excelで行ごとコピー、同じ行を...
-
Excelの関数について、特定の文...
-
テキストボックス内の文字のふ...
-
たくさん作った同じ設定のグラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのワークシートが重く...
-
ExcelVBAで、指定したシートに...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
IF, ISNUMBER, INDIRECTの組み...
-
Excelの中央値の複数条件について
-
エクセルで入力→日付を自動判別...
-
Excel ハイパーリンク先のセル...
-
エクセルVBA:表の内容を担当者...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル マクロを使って日々...
-
指定した日付の範囲内でデータ...
-
エクセルについて質問です 日付...
-
エクセルにて別シートの値を参...
-
エクセル:複数シートのデータ...
-
EXCEL VBA 一致しないデータの...
-
エクセル 毎日更新する表のデ...
-
エクセル シフト勤務表から、...
-
VBAのoffsetの動き方について教...
-
Excel 複数のシートからグラフ...
おすすめ情報