まとめるマクロを作成しました。
---
Sub 貼付先作成()
Dim 集計FM As Workbook
Dim 参照元 As Worksheet
Dim 貼付先 As Worksheet
Dim 行$, 名$, 頂$, 自$
Dim LastRow As Long
Set 貼付先 = ThisWorkbook.Worksheets(1)
貼付先.Cells.Delete
貼付先.Cells(1, 1) = "集計"
行 = 1
自 = ThisWorkbook.Name
頂 = "C:\AAA" & "\店舗実績表\"
名 = Dir(頂 & "*.xls")
Do Until 名 = ""
If 名 <> 自 Then
Set 集計FM = Workbooks.Open(頂 & 名)
Set 参照元 = 集計FM.Worksheets("スタッフチェック売上 ")
LastRow = 参照元.Range("A65000").End(xlUp).Row
行 = LastRow + 1
参照元.Range(Cells(3, 1), Cells(LastRow, 7)).Select
Selection.Copy
貼付先.Cells(行, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
集計FM.Close
End If
名 = Dir$()
Loop
End Sub
---
しかし、"貼付先.Cells(行, 1).Select"の部分でエラーが発生し、先に進みません。
正しいマクロの構成を教えてもらえますでしょうか?
Selectするときにそのシートがアクティブになっていないので選択できないわけです。
それでその前に、そのシートをアクティブにするコードを入れます。
それと、気になったのは行が1ずつしか増えないので複数行をコピーしても
1行ずつしかコピーされないということ。
行 = 行 + LastRow - 2
としてコピーした分増やすようにします。
たぶん作りたいのはこんな感じだと思います。
Sub 貼付先作成() Dim 集計FM As Workbook Dim 参照元 As Worksheet Dim 貼付先 As Worksheet Dim 行$, 名$, 頂$, 自$ Dim LastRow As Long Set 貼付先 = ThisWorkbook.Worksheets(1) 貼付先.Cells.Delete 貼付先.Cells(1, 1) = "集計" 行 = 2 自 = ThisWorkbook.Name 頂 = "C:\AAA" & "\店舗実績表\" 名 = Dir(頂 & "*.xls") Do Until 名 = "" If 名 <> 自 Then Set 集計FM = Workbooks.Open(頂 & 名) Set 参照元 = 集計FM.Worksheets("スタッフチェック売上 ") LastRow = 参照元.Range("A65000").End(xlUp).Row 参照元.Range(Cells(3, 1), Cells(LastRow, 7)).Select Selection.Copy 貼付先.Activate 貼付先.Cells(行, 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 行 = 行 + LastRow - 2 集計FM.Close End If 名 = Dir$() Loop End Sub
貼付先.Cells(行, 1).Select
の前に 以下の二行を入れて
ThisWorkbook.Activate
貼付先.Activate
貼付先.Cells(行, 1).Select
となるようにしてみたらいかがでしょうか?
ありがとうございます!!
ただ、参照元のデータに複数シートがあったので、うまく動かなかったのですが
Sheets("スタッフチェック売上 ").Select
を挿入することで解決いたしました。