teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2021/10/23 08:23

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -1,15 +1,38 @@
1
1
  こんな感じでどうでしょうか。
2
2
  ```VBA
3
- Sub NameCopy()
3
+ Sub Merge()
4
+
5
+ Dim MergeBook As Workbook
6
+ Dim CurrentBook As Workbook
7
+ Dim CurrentPath As String
8
+ Dim Filename As String
4
- Dim i As Long
9
+ Dim n As Integer
10
+
11
+ Application.ScreenUpdating = False
12
+ Set MergeBook = ThisWorkbook
13
+
14
+ Dim MergeSheet As Worksheet
15
+ Set MergeSheet = MergeBook.Worksheets.Add(, MergeBook.Worksheets.Count)
16
+ MergeSheet.Name = "集計"
17
+
18
+ CurrentPath = MergeBook.Path
19
+ Filename = Dir(CurrentPath & "*.xls?")
20
+
21
+ n = 0
22
+ Do While Filename <> Empty
23
+ If Filename <> MergeBook.Name Then
24
+ Set CurrentBook = Workbooks.Open(CurrentPath & "\" & Filename)
5
- Dim ws As Worksheet
25
+ Dim ws As Worksheet
6
- i = 1
7
- For Each ws In ThisWorkbook.Worksheets
26
+ For Each ws In CurrentBook.Worksheets
8
- If ws.Name Like "商品*" Then
9
- ws.Range("AJ1:AK500").Copy Sheets("集計").Cells(i, 1)
27
+ ws.Range("AJ1:AK500").Copy MergeSheet.Range("A" & MergeSheet.Rows.Count).End(xlUp).Offset(1)
28
+ Next
29
+ CurrentBook.Close False
10
- i = i + 500
30
+ n = n + 1
11
31
  End If
32
+ Filename = Dir
12
- Next
33
+ Loop
34
+
35
+ Application.ScreenUpdating = True
36
+ MsgBox n & "件のブックを処理しました。"
13
37
  End Sub
14
-
15
38
  ```