前言
計(jì)算機(jī)的內(nèi)存是有限的,面對(duì)海量的數(shù)據(jù)和垃圾文件,我們的電腦越來越慢,這時(shí)我們想清理一下我們的硬盤,通常的方法是:看一下哪個(gè)分區(qū)或目錄占用的空間比較大,然后再看一下目錄下的文件是否可以刪除.
但是當(dāng)我們打開資源管理器看到的卻是這個(gè)樣子的.
發(fā)現(xiàn):只有文件顯示大小,文件夾是不顯示的.如果需要知道某個(gè)文件夾的大小,需要點(diǎn)擊右鍵,屬性,如下圖所示.
?獲取文件夾大小
雖然我們不知道微軟為何不顯示文件夾的大小,但是我們一定要知道如何去獲取文件夾大小的方法.
在當(dāng)前文件夾內(nèi)創(chuàng)建一個(gè)EXCEL文件,我們可以起名為”文件夾大小.xlsm”,打開文件時(shí),啟用宏,按ALT+F11打開VBA編輯器,插入模塊,并寫入如下代碼:
'設(shè)置公共變量
Public i
Public n
Sub foldersize() '主程序
'驗(yàn)證當(dāng)前工作表名稱,防止寫錯(cuò)
If ActiveSheet.Name = "foldersize" Then
'清除所有單元格
Cells.Clear
'清除分級(jí)顯示
Cells.ClearOutline
Else
Exit Sub
End If
'初始化公共變量
i = 2
n = 1
Dim fso, fld
'定義對(duì)象
Set fso =CreateObject("scripting.filesystemobject")
Set fld = fso.getfolder(ThisWorkbook.Path)
'設(shè)置表頭
Cells(1, 1) = "文件夾名稱"
Cells(1, 2) = "文件夾大小(MB)"
subfd fld
End Sub
Sub subfd(fds) '子程序
For Each fd In fds.subfolders
If n <= 7 Then
Rows(i).OutlineLevel = n
Else
Rows(i).OutlineLevel = 7
End If
'寫入文件夾名稱
Cells(i, 1) = fd.Name
'縮進(jìn)
Cells(i, 1).InsertIndent (n)
'設(shè)置超級(jí)鏈接
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1),Address:=fd.Path
'?寫入文件夾大小
Cells(i, 2) = WorksheetFunction.Text(Round(fd.size / 1024 /1024, 2), "0.00")
i = i + 1
'如果有子文件夾,則進(jìn)行迭代
If fd.subfolders.Count <> 0 Then
'增加縮進(jìn)量
n = n + 1
'迭代
subfd fd
Else:
n = n + 1
End If
n = n - 1
Next
'設(shè)置分組顯示,匯總在上面
ActiveSheet.Outline.SummaryRow = xlAbove
End Sub
運(yùn)行foldersize主程序,結(jié)果如下圖所示:
列出了當(dāng)前目錄的每一個(gè)文件夾名稱及大小,并且運(yùn)用了分級(jí)顯示,目錄子目錄清清楚楚,還設(shè)置了超級(jí)鏈接,只有點(diǎn)擊就可以進(jìn)入你想要的目錄。
?總結(jié)
心動(dòng)不如行動(dòng),同學(xué)們也趕緊試試吧!記得把當(dāng)前工作表的名字改成foldersize,不然沒有結(jié)果哦!