2013-04-08 3 views
7

möchte ich die Dateigröße einiger Dateien im selben Ordner oder in einem anderen mit VBA in Excel 2010.VBA Excel-Funktion für Byte Dateigröße bei der Rückkehr

+1

Entschuldigung mein Fehler, funktioniert die Funktion perfekt. Mein Computer ist in deutschen Spracheinstellungen, deshalb musste ich ";" not "," Danke trotzdem – xmux

+0

Statt 'If Right (strFolder, 1) <>" \ "Dann strFolder = strFolder &" \ "' und dann 'strFolder & strFile' benutze einfach' OFS.BuildPath (strFolder, strFile) '. –

+1

Bitte editiere die Frage, um deine neuen Erkenntnisse zu reflektieren, eine Antwort zu posten oder sie zu löschen ... Momentan sitzt sie einfach unbeantwortet und verschwendet möglicherweise die gesamte Zeit. – Floris

Antwort

8

Hier zurückzukehren, wie es in Excel-Zelle zu verwenden:

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

Wenn Sie eine Windows-Deutsch als:

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

Hier ist die Funktion für das VBA-Modul: (Nur die Entwicklertools ermöglichen, und kopieren Sie diese in ein neues Modul)

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 *** 
+0

Das ist sehr seltsam! Was denkst du macht das '' '? Trennen Sie die beiden Parameter Ihrer Funktion oder handelt es sich um einen verketteten Operator? Ich habe es nie als Erstes und nur in Print-Statements als Letzteres gesehen. Gibt in Ihrer Funktion das "IsMissing (StrFile)" True oder False zurück? Wird das Semikolon auch verwendet, wenn Sie die Funktion innerhalb von VBA aufrufen, oder nur, wenn es sich um eine Tabellenkalkulationsfunktion handelt? – Floris

+0

';' ist eine Spracheinstellung in Windows, die Sie jederzeit ändern können. In deutschen Einstellungen funktioniert das ',' nicht in Excel als Trennzeichen. Es steht unter Einstellungen, Regionen und Sprache als Format Deutsch. – xmux

14

Es ist eine sehr schöne und einfache VBA-Funktion, die bisher nicht erwähnt wurde, FileLen:

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

Es gibt die Größe der Datei in Bytes .

In Kombination mit dem Durchlaufen von Dateien in einem Verzeichnis ist es möglich, das zu erreichen, was Sie ursprünglich wollten (Größe der Dateien in einem Ordner ermitteln).

+0

Leider funktioniert es nur für <2GB-Dateien, es sei denn, Sie verwenden spezielle Mathematik, dann ist es auf <4GB beschränkt. – NetMage