【问题标题】:VBA Excel Function for returning file size in byte用于以字节为单位返回文件大小的 VBA Excel 函数
【发布时间】:2013-04-08 15:34:17
【问题描述】:

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

【问题讨论】:

  • 对不起,我的错误,该功能完美运行。我的电脑是德语设置,这就是为什么我需要使用“;”不是“,”还是谢谢
  • 而不是If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\",然后是strFolder & strFile,只需使用OFS.BuildPath(strFolder, strFile)
  • 请编辑问题以反映您的新见解、发布答案或删除它...现在它只是坐在那里没有答案,可能会浪费大家的时间。
  • @Floris 是的,你是对的,但我发布的答案是正确的,我应该再次发布相同的答案吗?如果有人读了 cmets(每个人都读),他们会在那一刻看到它。
  • 发布答案的重点是人们不会说“哦,看,没有人能够回答那个,我去看看!”在阅读了问题和 cmets 后,他们意识到不需要任何帮助......但他们不会得到他们的五分钟。所以 - 感谢您发布您的解决方案!

标签: vba excel function size byte


【解决方案1】:

有一个很不错很简单的VBA函数,暂时没提到,FileLen

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

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

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

【讨论】:

  • 不幸的是它只适用于
【解决方案2】:

这里是如何在 Excel Cell 中使用它:

 =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 ***

【讨论】:

  • 这很奇怪!你认为; 在做什么?是将函数的两个参数分开,还是充当连接运算符?我从来没有看到它被用作前者,并且只在Print 语句中用作后者。在您的函数中,IsMissing (StrFile) 返回 True 还是 False?如果从 VBA 中调用函数,是否也使用分号,或者仅当它是电子表格函数时使用分号?
  • ; 是 Windows 中的语言设置选项,您可以随时更改。在德语设置中,, 在 Excel 中不能用作分隔符。它位于设置、区域和语言下,格式为德语。
  • 德语和大多数其他欧洲Excell,他们都使用;。以及函数名称的翻译。愚蠢,但真实。
猜你喜欢
  • 1970-01-01
  • 2014-03-13
  • 2013-05-03
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多