① 请教下高手如何用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,否则再选次之的。选过的标记出来,这样就可以了。
这个策略在不碰见极端苛刻条件的时候,是可以得到最优解的,但是不是万金油。