楼主 kevinchengcw |
Q: 如何用vba代码获取各个磁盘及磁盘空间使用情况? A: 代码如下:
- Sub test()
- Dim Str$, Disk, N#, I%, TS#, FS#
- Str = "Disk" & vbTab & "TotalSize" & vbTab & "UsedSize" & vbTab & "FreeSpace" & vbTab & "Status" & vbNewLine '设置显示标题行内容
- With CreateObject("scripting.filesystemobject") '创建FSO项目
- For Each Disk In .drives '循环系统各个磁盘
- If Disk.isready Then '如果磁盘可用
- TS = Disk.totalsize '取得总容量大小
- FS = Disk.freespace '取得剩余空间大小
- N = TS
- X N, I '调用自定义函数,并返回相应的容量大小和单位等级
- Str = Str & Disk.Path & vbTab & N & Choose(I, "KB", "MB", "GB", "TB") & vbTab '将相应的容量及单位串接在结果字符串后
- N = TS - FS
- X N, I '处理已使用空间
- Str = Str & N & Choose(I, "KB", "MB", "GB", "TB") & vbTab
- N = FS
- X N, I '处理剩余空间
- Str = Str & N & Choose(I, "KB", "MB", "GB", "TB") & vbTab & IIf(I < 3, "Low Space", "Good") & vbNewLine
- Else '如果磁盘不可用,则仅添加盘符
- Str = Str & Disk.Path & vbNewLine
- End If
- Next Disk
- End With
- MsgBox Str '显示结果字符串
- End Sub
- Function X(ByRef N As Double, ByRef I As Integer) '自定义函数,参数1为容量大小字节数,参数2为单位等级
- I = 0 '初始化单位等级
- Do While N > 999.9 '当容量大小大于三位整数时继续循环
- N = Round(N / 1024, 1) '除以1024字节并将结果保留一位小数
- I = I + 1 '第除一次,单位等级加1,方便利用choose函数取出对应的等级"KB","MB","GB","TB"
- Loop
- End Function
|