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

回答編集履歴

4

コード修正

2020/12/01 05:44

投稿

hatena19
hatena19

スコア34377

answer CHANGED
@@ -1,8 +1,44 @@
1
1
  `.Row`が余分ですね。Rowは何行目かという数値ですのでそのエラーになります。
2
2
  あと、`Worksheets(1)` は `Worksheets(i)`じゃないですか。
3
3
 
4
-
5
4
  ```vba
6
5
  Worksheets(i).Range("A2", Range("A2").End(xlToRight).End(xlDown)).Copy
7
6
  ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial xlValues
7
+ ```
8
+ コメントを受けて追記
9
+ ---
10
+ さらに、Range や Cells の中の Range("A2") や Rows.Count もブック.シートを指定しないと、エラーになりますね。
11
+
12
+ ```vba
13
+ For i = 1 To Workbooks(事業所別コード社員一覧).Worksheets.Count
14
+ With Workbooks(事業所別コード社員一覧).Sheets(i)
15
+ .Range("A2", .Range("A2").End(xlToRight).End(xlDown)).Copy
16
+ End With
17
+ With ThisWorkbook.Worksheets(1)
18
+ .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlValues
19
+ End With
20
+ Next
21
+ ```
22
+
23
+ ちょっとコードが読みづらくなるので、ここは変数をうまく使うとぐっと読みやすくなります。
24
+
25
+ ```vba
26
+ Sub まとめるマクロ()
27
+
28
+ Dim 事業所別コード社員一覧 As String
29
+ 事業所別コード社員一覧 = Dir("C:\TEST\test1.xlsm")
30
+
31
+ Dim fromWB As Workbook
32
+ Set fromWB = Workbooks.Open(事業所別コード社員一覧)
33
+
34
+ Dim toWS As Worksheet
35
+ Set toWS = ThisWorkbook.Worksheets(1)
36
+
37
+ Dim i As Integer
38
+ For i = 1 To fromWB.Worksheets.Count
39
+ fromWB.Sheets(i).Range("A2", fromWB.Sheets(i).Range("A2").End(xlToRight).End(xlDown)).Copy
40
+ toWS.Cells(toWS.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlValues
41
+ Next
42
+
43
+ End Sub
8
44
  ```

3

書式の改善

2020/12/01 05:44

投稿

hatena19
hatena19

スコア34377

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  あと、`Worksheets(1)` は `Worksheets(i)`じゃないですか。
3
3
 
4
4
 
5
- '''vba
5
+ ```vba
6
6
  Worksheets(i).Range("A2", Range("A2").End(xlToRight).End(xlDown)).Copy
7
7
  ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial xlValues
8
8
  ```

2

コード修正

2020/12/01 05:11

投稿

hatena19
hatena19

スコア34377

answer CHANGED
@@ -3,5 +3,6 @@
3
3
 
4
4
 
5
5
  '''vba
6
+ Worksheets(i).Range("A2", Range("A2").End(xlToRight).End(xlDown)).Copy
6
- ThisWorkbook.Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial xlValues
7
+ ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial xlValues
7
8
  ```

1

コード修正

2020/12/01 03:23

投稿

hatena19
hatena19

スコア34377

answer CHANGED
@@ -3,5 +3,5 @@
3
3
 
4
4
 
5
5
  '''vba
6
- ThisWorkbook.Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial (xlValues)
6
+ ThisWorkbook.Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row.Offset(1, 0).PasteSpecial xlValues
7
7
  ```