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

質問編集履歴

2

意図的に内容を抹消する行為にあたるため

2021/06/08 08:30

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- aaaaaaaaaa
1
+ VBA 複数のブックから複数のシートをまとめたい
body CHANGED
@@ -1,2 +1,70 @@
1
+ ### 前提・実現したいこと
2
+ VBAで複数のブックから複数のシートを一つのブックにまとめたい。
3
+ ### 発生している問題・エラーメッセージ
1
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4
+ ブックによってとりだしたいシートが1つの時と2つの時があるのですが2つめがあった場合は2つめもまとめてなかった場合はスルーしたいのですがスルーができません。
5
+ また、シート名をブック名にしたいのですが2つめがあった場合は[ブック名.2]としたいのですがその指定もできません。
6
+ エラーメッセージ
7
+ ### 該当のソースコード
8
+ ```ここに言語名を入力
9
+ VBA
10
+ ソースコード
11
+ Sub Sample()
12
+ Dim sFile As String
13
+ Dim sWB As Workbook, dWB As Workbook
14
+ Dim dSheetCount As Long
15
+ Dim i As Long
16
+ Const SOURCE_DIR As String = "フォルダ"
17
+ Const DEST_FILE As String = "ブック"
18
+
19
+ Application.ScreenUpdating = False
20
+
21
+ '指定したフォルダ内にあるブックのファイル名を取得
22
+ sFile = Dir(SOURCE_DIR & "*.xls")
23
+
24
+ 'フォルダ内にブックがなければ終了
25
+ If sFile = "" Then Exit Sub
26
+
27
+ '集約用ブックを作成
28
+ Set dWB = Workbooks.Add
29
+
30
+ '集約用ブック作成時のシート数を
31
+ dSheetCount = dWB.Worksheets.Count
32
+
33
+ Do
34
+ 'コピー元のブックを開く
35
+ Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)
36
+
37
+
38
+
39
+ 'コピー元の「a,a(2)←あれば」シートを集約用ブックにコピー
40
+ sWB.Worksheets(Array("a", "a(2)")).Copy After:=dWB.Worksheets(dSheetCount)
41
+
42
+
43
+
44
+ 'シート名をフォルダ名、a(2)がある場合はフォルダ名.2
45
+ ActiveSheet.Name = sFile
46
+ 'コピー元ファイルを閉じる
47
+ sWB.Close
48
+
49
+ '次のブックのファイル名を取得
50
+ sFile = Dir()
51
+ Loop While sFile <> ""
52
+
53
+ '集約用ブック作成時にあったシートを削除
54
+ Application.DisplayAlerts = False
55
+ For i = dSheetCount To 1 Step -1
56
+ dWB.Worksheets(i).Delete
57
+ Next i
58
+ Application.DisplayAlerts = True
59
+
60
+ '集約用ブックを保存して閉じる
61
+ dWB.SaveAs Filename:=DEST_FILE
62
+ dWB.Close
63
+
64
+ Application.ScreenUpdating = False
65
+ End Sub
66
+ ### 試したこと
67
+ ここに問題に対して試したことを記載してください。
68
+ ふくすう
69
+ ### 補足情報(FW/ツールのバージョンなど)
2
- ここにより詳細な情報を記載してください。aaaaaaa
70
+ ここにより詳細な情報を記載してください。

1

誤字

2021/06/08 08:30

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- VBA 複数のブックから複数のシートをまとめたい
1
+ aaaaaaaaaa
body CHANGED
@@ -1,82 +1,2 @@
1
- ### 前提・実現したいこと
2
-
3
- VBAで複数のブックから複数のシートを一つのブックにまとめたい。
4
-
5
- ### 発生している問題・エラーメッセージ
6
-
7
- ブックによってとりだしたいシートが1つの時と2つの時があるのですが2つめがあった場合は2つめもまとめてなかった場合はスルーしたいのですがスルーができません。
1
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8
- また、シート名をブック名にしたいのですが2つめがあった場合は[ブック名.2]としたいのですがその指定もできません。
9
-
10
- エラーメッセージ
11
-
12
- ### 該当のソースコード
13
-
14
- ```ここに言語名を入力
15
- VBA
16
-
17
- ソースコード
18
- Sub Sample()
19
- Dim sFile As String
20
- Dim sWB As Workbook, dWB As Workbook
21
- Dim dSheetCount As Long
22
- Dim i As Long
23
- Const SOURCE_DIR As String = "フォルダ"
24
- Const DEST_FILE As String = "ブック"
25
-
26
- Application.ScreenUpdating = False
27
-
28
- '指定したフォルダ内にあるブックのファイル名を取得
29
- sFile = Dir(SOURCE_DIR & "*.xls")
30
-
31
- 'フォルダ内にブックがなければ終了
32
- If sFile = "" Then Exit Sub
33
-
34
- '集約用ブックを作成
35
- Set dWB = Workbooks.Add
36
-
37
- '集約用ブック作成時のシート数を
38
- dSheetCount = dWB.Worksheets.Count
39
-
40
- Do
41
- 'コピー元のブックを開く
42
- Set sWB = Workbooks.Open(Filename:=SOURCE_DIR & sFile)
43
-
44
-
45
-
46
- 'コピー元の「a,a(2)←あれば」シートを集約用ブックにコピー
47
- sWB.Worksheets(Array("a", "a(2)")).Copy After:=dWB.Worksheets(dSheetCount)
48
-
49
-
50
-
51
- 'シート名をフォルダ名、a(2)がある場合はフォルダ名.2
52
- ActiveSheet.Name = sFile
53
- 'コピー元ファイルを閉じる
54
- sWB.Close
55
-
56
- '次のブックのファイル名を取得
57
- sFile = Dir()
58
- Loop While sFile <> ""
59
-
60
- '集約用ブック作成時にあったシートを削除
61
- Application.DisplayAlerts = False
62
- For i = dSheetCount To 1 Step -1
63
- dWB.Worksheets(i).Delete
64
- Next i
65
- Application.DisplayAlerts = True
66
-
67
- '集約用ブックを保存して閉じる
68
- dWB.SaveAs Filename:=DEST_FILE
69
- dWB.Close
70
-
71
- Application.ScreenUpdating = False
72
- End Sub
73
-
74
-
75
- ### 試したこと
76
-
77
- ここに問題に対して試したことを記載してください。
78
- ふくすう
79
-
80
- ### 補足情報(FW/ツールのバージョンなど)
81
-
82
- ここにより詳細な情報を記載してください。
2
+ ここにより詳細な情報を記載してください。aaaaaaa