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

回答編集履歴

1

同様の質問とその回答を見つけました。

2019/04/27 21:58

投稿

SnowMonkey
SnowMonkey

スコア53

answer CHANGED
@@ -1,51 +1,4 @@
1
- 私も初心者です。私も同様のこと実現たくググって自分の目的に合わせほんの少しだけ変えたものが以下のものです。私も参照先の方に失礼と思いますが、参照先が分からなくなってまいましし、質問者様のお役に立ばと思いので、手元のコードを紹介します。
1
+ 私も同様な質問をして、回答ただきました質問者さまも役つかもしれませんので
2
+ 参照してみてください。
2
3
 
3
- ```Excel VBA
4
-
5
- Option Explicit
6
-
7
- '「data」フォルダにあるファイルを開いて、その内容をこのワークブックにまとめる
8
- Sub importData()
9
- Dim fso As FileSystemObject
10
- Set fso = New FileSystemObject
11
-
12
-
13
- Dim f As File
14
- For Each f In fso.GetFolder(ThisWorkbook.Path & "\data").Files 'dataフォルダにあるファイルを1つずつ開いて処理
15
- With Workbooks.Open(f.Path)
16
- Dim bkName As String
17
- bkName = .Name
18
-
19
- Dim i As Long
20
- For i = 1 To Worksheets.Count ' 全シートを処理する
21
- With .Worksheets("Sheet" & i)
22
-
23
- '----------データの複写先のシートの最終行を取得--------------------
24
- Dim wsResult As Worksheet
25
- Set wsResult = ThisWorkbook.Worksheets("Sheet" & i) 'データの複写先のシート
26
-
27
- Dim LastRow As Long
28
- LastRow = wsResult.Cells(Rows.Count, 3).End(xlUp).row 'データの複写先のシートの最終行
29
-
30
- '------開いたシートの使用されている範囲を、複写先シートの最終行の次行にコピーする A列とB列は空欄にしておく------------
31
- .UsedRange.Copy wsResult.Cells(LastRow + 1, 3) '3列目つまりC列に
4
+ https://teratail.com/questions/171219#
32
-
33
- '------データを追加した範囲のA列B列にブック名から抜き出した情報を書き込む------------
34
- Dim LastRow2 As Long
35
- LastRow2 = wsResult.Cells(Rows.Count, 3).End(xlUp).row 'データの複写先のシートの最終行を再び取得して
36
- wsResult.Range(wsResult.Cells(LastRow + 1, 1), wsResult.Cells(LastRow2, 1)).Value = Left(bkName, 2)
37
- wsResult.Range(wsResult.Cells(LastRow + 1, 2), wsResult.Cells(LastRow2, 2)).Value = Mid(bkName, 3, 2)
38
-
39
- End With
40
- Next i
41
- .Close
42
-
43
- End With
44
-
45
- Next f
46
-
47
- End Sub
48
-
49
-
50
-
51
- ```