在VBA Excel中工作,我可以得到一个目录中所有文件的总大小,不包括子目录。

问题描述 投票:0回答:1

我目前正在研究一个程序,比较两个文件夹的内容是否相同。标准是,如果两个文件夹的文件数量和总大小相同,那么它们很可能包含相同的文件......更多的检查将在测试后进行。问题是,一个给定的文件夹可能有一个或多个子文件夹,我希望忽略这些子文件夹(同样,这将在以后处理)。

我可以通过下面的代码得到文件夹的总大小,但这包括子文件夹的大小。由于速度原因,我不希望循环浏览各个文件,并将文件大小相加。有什么方法可以得到一个给定文件夹中所有文件(不包括子文件夹)的总大小?

strDir = ActiveCell.Offset(RowOffset:=x).Value

Set fso = CreateObject("Scripting.FileSystemObject")


Set objFiles = fso.GetFolder(strDir).Files

Set Folders = fso.GetFolder(strDir)

FileCount = objFiles.Count
DirsSize = Folders.Size

ActiveCell.Offset(columnOffset:=1, RowOffset:=x).Value = FileCount
ActiveCell.Offset(columnOffset:=2, RowOffset:=x).Value = DirsSize

注释:我目前正在研究一个例程,用来计算文件的大小。

This segment also gets the number of files (excluding subdirectories) in the folder.

The segment may be called several hundred times by the routine and each folder may contain
several thousand files hence the reluctance to sum file sizes via a loop.

Strdir contains a valid folder path,

The above code works but the size is the size of the folder including subdirectories which is
not what I want.
directory size subdirectory
1个回答
0
投票

我现在已经找到了问题的答案。虽然它涉及到一个递归循环来求和子文件夹的大小,但还是很快的。附上的说明代码是从微软的帮助页面改编而来的......

Sub ShowFolderSize()

Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(<Folder Name>)
Set sf = f.Subfolders

FSize = 0

    For Each N In sf

        FSize = FSize + N.Size

    Next N


s = UCase(f.Name) & " uses " & f.Size & " bytes of which " & FSize & " are in subfolders and " & f.Size - FSize & " are in files."

MsgBox s, 0, "Folder Size Info"

结束子

谢谢你看

RannochRob

© www.soinside.com 2019 - 2024. All rights reserved.