StructureT-Makerで出力したフォルダリストを階層毎にグループ化するVBAマクロ
大きなプロジェクトのソースファイルを見ようとすると、大変な思いをすることがあります。
そんな時は窓の杜 - 【今日のお気に入り】フォルダをツリー構造ごと一覧表示「StructureT-Maker」などのアプリでざっとフォルダ構造を見させていただいています。
ただし、フォルダ構造次第では何万行となってしまうわけで…
というわけで、階層毎にグループ化するVBAマクロを書いてみました。
'StructureT-Makerで出力したフォルダリストを階層毎にグループ化する Sub フォルダツリーグループ化() '最終セル取得 Dim 最終行 As Long '最終行 Dim 最終列 As Integer '最終列 最終行 = ActiveSheet.UsedRange.Rows.Count 最終列 = ActiveSheet.UsedRange.Columns.Count Dim 調査セル As Object Dim グループ化開始行 As Long Dim グループ化終了行 As Long グループ化開始行 = 0 グループ化終了行 = 0 '2列目から縦方向に検索し、空白以外のセルを見つける For i = 2 To 最終列 For j = 1 To 最終行 Set 調査セル = Cells(j, i) If 調査セル <> "" Then '空白→空白以外セルの境界行を保持する If グループ化開始行 = 0 Then グループ化開始行 = 調査セル.Row グループ化終了行 = 0 End If Else '空白以外→空白セルの境界行を保持する If グループ化開始行 <> 0 Then If グループ化終了行 = 0 Then グループ化終了行 = 調査セル.Row - 1 'グループ化する Range(Cells(グループ化開始行, 1), Cells(グループ化終了行, 1)).Rows.Group グループ化開始行 = 0 End If End If End If Next グループ化開始行 = 0 Next End Sub
一応意図した通りに動いてくれているようです。
明日にでも当初のソースで実験してみよう。
追記
Excellの行のグループ化は8階層が限界かも知れません。
それ以上グループ化しようとすると、VBAがエラー吐きます…