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 に答える