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

回答編集履歴

1

追記

2022/06/07 02:25

投稿

hatena19
hatena19

スコア34367

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
  ```