① 請教下高手如何用EXCEL獲取文件屬性的大小
Dim TStr, Fstr As String
TStr = InputBox("請輸入文件或文件夾的路徑:", "提示", "C:\") '
ChDrive Left(TStr, 1)
ChDir Left(TStr, InStrRev(TStr, "\") - 1)
Fstr = Dir(TStr)
If Len(Fstr) Then
Range("B1").Select
ActiveCell.FormulaR1C1 = "找到該文件" & FileLen(Fstr) '加多如果找到改文件就在,Range("D1").Select輸出文件的大小
Else
Range("C1").Select
ActiveCell.FormulaR1C1 = "文件不存在"
End If
返回的是多少位元組
② 如何批量提取文件夾里的文件名和大小,最好能做成EXCEL格式
先打開dos命令行窗口,打開方法是點開始——運行——輸入cmd,然後輸入x:(x為盤符,比如你的文件在e盤那麼x就是e),回車;cd
xxxxxxx(幾個x表示目錄名稱,如果不好輸可用tab鍵切換),回車,這一步也許要重復幾次。將當前目錄變成你想處理的目錄後,最後輸入dir
*.*
/s
/a
/l
>1.txt
回車,文件名就都在1.txt了,是一行一個文件名的,復制到excel就可以用了
③ excel 比較復雜的獲取文件大小宏代碼(完整代碼)謝謝!
在工作表名稱的標簽上點擊滑鼠右鍵先查看代碼,粘貼下面的代碼到彈出的VBA編輯窗口,關閉VBA編輯窗口,返回工作表.按ALT+F8選中該宏 執行
Sub GetSize()
Dim iPath As String, ExArr, FZArr(), fp, fs, f
If Range("A1") = "" Then Exit Sub
iPath = "f:\" & Left(Range("A1"), 4)
ExArr = Split("txt,exe,doc", ",")
If Dir(iPath, vbDirectory) = vbNullString Then Exit Sub
Set fs = CreateObject("Scripting.FileSystemObject")
For i = 0 To 2
fp = iPath & "\" & Range("A1") & "." & ExArr(i)
If Not Dir(fp) = vbNullString Then
Set f = fs.getfile(iPath & "\" & Range("A1") & "." & ExArr(i))
n = n + 1
ReDim Preserve FZArr(1 To n)
FZArr(n) = ExArr(i) & ":" & WorksheetFunction.RoundUp(f.Size / 1024, 0)
End If
Next
Range("B1") = Join(FZArr)
End Sub
④ 求Excel巧算文件夾大小的方法
說白了這是一個程序設計裡面的背包問題,這個光通過excel的公式是算不出來的。
可以通過vba,c語言等編程語言寫一個小程序計算。
如果不是追求純粹理論上的最優解的話,使用貪心思想可以解決這個問題。
按大小排序,選擇最大的放入光碟A,再選擇次之的,如果光碟剩餘容量大於次之的大小,次之的放入光碟A,否則再選次之的。選過的標記出來,這樣就可以了。
這個策略在不碰見極端苛刻條件的時候,是可以得到最優解的,但是不是萬金油。