Modify this to only open files less than a certain size?

TheWennerWoman

Active Member
Joined
Aug 1, 2019
Messages
270
Office Version
  1. 365
Platform
  1. Windows
Hello,

I have this which works but I need it modified to only open files less than 100kb in size:
VBA Code:
Option Explicit

Sub OpenAllFiles()

    Dim filpath As String
    Dim fso As Scripting.FileSystemObject
    Dim fil As Scripting.File
    Dim fldr As Scripting.Folder

    filpath = "C:\Users\Spartacus\OneDrive - Acme Toys\Documents\Daily Control Files\"
    Set fso = New Scripting.FileSystemObject
    Set fldr = fso.GetFolder(filpath)
Application.DisplayAlerts = False

On Error Resume Next
For Each fil In fldr.Files
    With Application.Workbooks.Open(fil.Path)
        .RefreshAll
'        .Close False
    End With
Next fil
    

End Sub

Any help appreciated as always :)
 

Excel Facts

Why does 9 mean SUM in SUBTOTAL?
It is because Sum is the 9th alphabetically in Average, Count, CountA, Max, Min, Product, StDev.S, StDev.P, Sum, VAR.S, VAR.P.
Maybe like this
VBA Code:
On Error Resume Next
For Each fil In fldr.Files
    Debug.Print "name: " & fil.Name & "  Size: " & fil.Size
    If fil.Size < 20480 And InStr(fil.Name, "xls") > 0 Then
        With Application.Workbooks.Open(fil.Path)
            .RefreshAll
'           .Close False
        End With
    End If
Next fil
The debug.print is only there to give you a better idea of the number returned by fil.Size (it is in bytes, not KB). Edit to suit and comment out or remove when not needed. Also, I assumed you wanted only certain file types to open so I chose anything with "xls" thus it would not open xlt. Note that if the middle of the file contains the letter combination you use, then that will open also. That may require modification - you might get away with fil.Type
 
Upvote 1
Solution
Thanks, I'll give it a go when I'm in the office.

The folder in question only has *.xlsm files in it so I am safe with that.
 
Upvote 0
Maybe like this
VBA Code:
On Error Resume Next
For Each fil In fldr.Files
    Debug.Print "name: " & fil.Name & "  Size: " & fil.Size
    If fil.Size < 20480 And InStr(fil.Name, "xls") > 0 Then
        With Application.Workbooks.Open(fil.Path)
            .RefreshAll
'           .Close False
        End With
    End If
Next fil
The debug.print is only there to give you a better idea of the number returned by fil.Size (it is in bytes, not KB). Edit to suit and comment out or remove when not needed. Also, I assumed you wanted only certain file types to open so I chose anything with "xls" thus it would not open xlt. Note that if the middle of the file contains the letter combination you use, then that will open also. That may require modification - you might get away with fil.Type

works perfectly, many thanks!
 
Upvote 0

Forum statistics

Threads
1,215,191
Messages
6,123,553
Members
449,108
Latest member
rache47

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top