回答編集履歴
1
追記
answer
CHANGED
@@ -22,4 +22,46 @@
|
|
22
22
|
|
23
23
|
Worksheets("Main").Cells(1, 1).Resize(j - 1, 2).Value = FlagFrame '配列をセル範囲に出力
|
24
24
|
End Sub
|
25
|
+
```
|
26
|
+
|
27
|
+
追記
|
28
|
+
---
|
29
|
+
ブックと同じフォルダーにCSVファイルがあり、それを読み込む場合のコード例
|
30
|
+
|
31
|
+
```vba
|
32
|
+
Public Sub sample()
|
33
|
+
Dim outputCell As Range
|
34
|
+
With Worksheets("Main")
|
35
|
+
.Cells(1, 1).CurrentRegion.ClearContents
|
36
|
+
.Range("A1:B1").Value = Array("シート名", "フレーム番号")
|
37
|
+
Set outputCell = .Cells(2, 1) '出力セル
|
38
|
+
End With
|
39
|
+
|
40
|
+
Application.ScreenUpdating = False
|
41
|
+
Dim fn As String
|
42
|
+
fn = Dir(ThisWorkbook.Path & "\result*.csv")
|
43
|
+
Do Until fn = ""
|
44
|
+
With Workbooks.Open(fn)
|
45
|
+
outputMain .Worksheets(1), outputCell
|
46
|
+
.Close False
|
47
|
+
End With
|
48
|
+
fn = Dir()
|
49
|
+
Loop
|
50
|
+
Application.ScreenUpdating = True
|
51
|
+
End Sub
|
52
|
+
|
53
|
+
Sub outputMain(ws As Worksheet, ByRef outputCell As Range)
|
54
|
+
Dim FlagFrame()
|
55
|
+
FlagFrame = ws.Range("A1").CurrentRegion.Value
|
56
|
+
Dim i As Long, j As Long
|
57
|
+
For i = 1 To UBound(FlagFrame) - 1
|
58
|
+
If FlagFrame(i, 2) = 0 And FlagFrame(i + 1, 2) = 1 Then
|
59
|
+
j = j + 1
|
60
|
+
FlagFrame(j, 2) = FlagFrame(i + 1, 1)
|
61
|
+
FlagFrame(j, 1) = ws.Name
|
62
|
+
End If
|
63
|
+
Next
|
64
|
+
outputCell.Resize(j, 2).Value = FlagFrame
|
65
|
+
Set outputCell = outputCell.Offset(j) '出力セルを次のセルに設定
|
66
|
+
End Sub
|
25
67
|
```
|