Mapgrootte ophalen

Status
Niet open voor verdere reacties.

JEC.

Terugkerende gebruiker
Lid geworden
27 feb 2019
Berichten
4.330
Office versie
365
Goedenavond helpers,

Met onderstaande code haal ik de mapgrootte op. Dat gaat prima, totdat ik de bestanden op wil halen die met mijn verkenner gelinked zijn dmv sharepoint (waarvan ik de logica wel snap)
De vraag is: kan ik met een shell object ook de mapgrootte ophalen? Ik bedoel dus niet de grootte van de onderliggende bestanden, maar enkel en alleen de grootte van de gehele folder.

Het filesystemobject dient hierin vervangen te worden door een alternatieve aanpak, indien mogelijk.


Code:
Sub getfoldersize()
jv = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\...\...\...\"" /b").stdout.readall, vbCrLf)
 ReDim ar(UBound(jv), 1)
 For i = 0 To UBound(jv) - 1
   [COLOR="#FF0000"]With CreateObject("scripting.filesystemobject")[/COLOR]
      Set strFolder = .GetFolder("C:\Users\...\...\...\" & jv(i))
        If Not strFolder Is Nothing Then
          ar(i, 0) = jv(i)
          ar(i, 1) = strFolder.Size
        End If
    Set strFolder = Nothing
   End With
 Next
Sheets(1).Cells(1).Resize(UBound(jv), 2) = ar
End Sub
 
Laatst bewerkt:
Test eens:

Code:
Sub M_snb()
   MsgBox Right(CreateObject("wscript.shell").exec("cmd /c dir G:\OF\").stdout.readall, 200)
End Sub
 
@snb, bedankt voor je reactie.
Ik heb het getest en er is helaas geen uitkomst. Vanavond zal ik het nog eens testen in een andere omgeving!
 
Ik heb het op deze manier werkend gekregen:thumb:

Code:
Sub getfoldersize()
 jv = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\...\...\...\...\"" /b").stdout.readall, vbCrLf)
   ReDim ar(UBound(jv), 1)
     For i = 0 To UBound(jv) - 1
       ar(i, 0) = jv(i)
       ar(i, 1) = Split(Replace(CreateObject("wscript.shell").exec("cmd /c dir ""C:\...\...\...\...\" & jv(i)).stdout.readall, "File(s)", "bytes"), "bytes")(1)
     Next
  Sheets(1).Cells(1).Resize(UBound(jv), 2) = ar
End Sub
 
Onderstaande doet dan hetzelfde.

Code:
ar(i, 1) = FileLen("C:\...\...\...\...\" & jv(i))

Ook beter dan dat geflikker van......
 
De vraag is: kan ik met een shell object ook de mapgrootte ophalen? Ik bedoel dus niet de grootte van de onderliggende bestanden, maar enkel en alleen de grootte van de gehele folder.
Volgens mij voldoet de code in #4 hier niet aan? Je propt op een bijzonder trage manier de bestanden uit een map in een werkblad. Zie ook #5
 
Klopt het is een traag alternatief omdat filesystemobject de sharepoint bestanden niet ziet. @Harry, bedankt voor je reactie. Ik ga het zo testen. Naar zoiets was ik op zoek.

Edit: Filelen geeft ook overal 0 terug. Ik heb de foldersize ipv de filesize nodig.
 
Laatst bewerkt:
Werkt dit in die omgeving?
Code:
Sub hsv()
Dim fl As Object
 For Each fl In CreateObject("Scripting.FileSystemObject").GetFolder("c:\...\...\...\").subFolders
    MsgBox fl.Name
    MsgBox fl.Size & "  bytes"
 Next fl
End Sub
 
Ik heb er voor gekozen om de folders te downloaden op mijn PC.
Daarmee werkt het filesystemobject wel. @Harry, je laatste schrijven werkt dan uiteraard ook naar behoren. Bedankt:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan