15

我希望在 Excel 2010 中使用 VBA 返回同一文件夹中或不同文件夹中某些文件的文件大小。

4

2 回答 2

31

有一个非常好用且简单的 VBA 函数,目前还没有提到,FileLen

FileLen("C:\Temp\test file.xls")

它以字节为单位返回文件的大小。

结合遍历目录中的文件,可以实现您最初想要的(获取文件夹中文件的大小)。

于 2015-03-30T03:07:56.353 回答
14

这里如何在 Excel 单元格中使用它:

 =GetDirOrFileSize("C:\Users\xxx\Playground\","filename.xxx")

如果您有德语 Windows,则:

=GetDirOrFileSize("C:\Users\xxx\Playground\";"filename.xxx")

这是 VBA 模块的功能:(只需启用开发人员工具,然后将其复制并粘贴到新模块中)

Function GetDirOrFileSize(strFolder As String, Optional strFile As Variant) As Long

'Call Sequence: GetDirOrFileSize("drive\path"[,"filename.ext"])

   Dim lngFSize As Long, lngDSize As Long
   Dim oFO As Object
   Dim oFD As Object
   Dim OFS As Object

   lngFSize = 0
   Set OFS = CreateObject("Scripting.FileSystemObject")

   If strFolder = "" Then strFolder = ActiveWorkbook.path
   If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
   'Thanks to Jean-Francois Corbett, you can use also OFS.BuildPath(strFolder, strFile)

   If OFS.FolderExists(strFolder) Then
     If Not IsMissing(strFile) Then

       If OFS.FileExists(strFolder & strFile) Then
         Set oFO = OFS.Getfile(strFolder & strFile)
         GetDirOrFileSize = oFO.Size
       End If

       Else
        Set oFD = OFS.GetFolder(strFolder)
        GetDirOrFileSize = oFD.Size
       End If

   End If

End Function   '*** GetDirOrFileSize ***
于 2013-04-09T09:03:02.090 回答