任意のフォルダのサブフォルダに保存されている全ファイルのサイズを取得してグラフ化します。サンプルでは「C:\Tmp」フォルダを調べています。「C:\Tmp」フォルダには「Sub」「Sub2」「Work」「Work2」という4つのサブフォルダを作成し、適当なファイルを保存しました。マクロの後半はグラフを作るコードです。グラフのオプションなどはご自由に設定してください。
Sub Sample08() Dim FSO As Object, f As Variant, cnt As Long Set FSO = CreateObject("Scripting.FileSystemObject") For Each f In FSO.GetFolder("C:\Tmp\").SubFolders cnt = cnt + 1 Cells(cnt, 1) = FSO.GetFolder(f).Name Cells(cnt, 2) = FSO.GetFolder(f).Size Next f Set FSO = Nothing ''グラフの作成 ActiveSheet.ChartObjects.Add Range("C1").Left, Range("C1").Top, _ Range("C1:G16").Width, Range("C1:G16").Height With ActiveSheet.ChartObjects(1).Chart .ChartType = xl3DBarClustered .HasLegend = False .SetSourceData Source:=ActiveSheet.Range("A1").CurrentRegion .Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name .Axes(xlCategory).ReversePlotOrder = True End With Range("A1").Activate End Sub
参考までに、Excel 2003とExcel 2010で実行した結果です。同じコードで、Excel 2007/2010でも、エラーにならず実行できます。
【Excel 2003】
【Excel 2010】