|
发表于 2016-6-9 12:31
|
显示全部楼层
本楼为最佳答案
新建一个excel文件试下吧- Dim cnt%
- Sub test()
- Dim fso As Object, dri As Object
- Dim i As Integer
- Dim str$, t
- Range("a1").CurrentRegion.Clear
- t = Timer
- i = 1
- cnt = 0
- Set fso = CreateObject("Scripting.FileSystemObject")
- With ThisWorkbook.Worksheets("sheet1")
- .Cells(i, 1).Resize(1, 3) = Array("盘符", "已用空间", "容量")
- For Each dri In fso.Drives
- If dri.IsReady Then
- i = i + 1
- .Cells(i, 1) = dri.driveletter '盘符
- .Cells(i, 2) = Format((dri.TotalSize - dri.AvailableSpace) / 1024 ^ 3, "0.0G") '已用空间
- .Cells(i, 3) = Format(dri.TotalSize / 1024 ^ 3, "0G") '容量
- End If
- str = dri.Path & ""
- fldsize (str)
- Next
- End With
- MsgBox ("运行时间:" & Timer - t)
- End Sub
- Sub fldsize(str)
- On Error Resume Next
- Dim fso, fld, fld1
- Set fso = CreateObject("scripting.filesystemobject")
- Set fld = fso.getfolder(str)
- With ThisWorkbook.Worksheets("sheet2")
- .Cells(1, 1).Resize(1, 4) = Array("盘符", "文件名", "文件路径", "文件夹大小")
- For Each fld1 In fld.subfolders
- .Range("A" & cnt + 2) = fld1.drive.driveletter
- .Range("B" & cnt + 2) = fld1.Name
- .Range("c" & cnt + 2) = fld1.Path
- .Range("D" & cnt + 2) = Format(fld1.Size / 1024 ^ 2, "0.00MB")
- cnt = cnt + 1
- Next
- End With
- End Sub
复制代码 |
|