There are many occassions where you want to save the file as Readonly (at times with a Password protection) after you complete the process. We have talked about SetAttr that changes the file attributes. Now let us see how to do this using FileSystemObject
Please refer How to iterate through all Subdirectories till the last directory in VBA to know how to include the references if you are using Early binding.
The following snippet uses late binding and shows how to set the file as read-only
Function MakeFileReadOnly(ByVal sFile As String) Dim strSaveFilename As String Dim oFSO As Object 'Scripting.FileSystemObject Dim oFile As Object 'Scripting.File ' Create Objects ' Uses Late Binding Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.GetFile(FilePath:=sFile) ' Set file to be read-only oFile.Attributes = 1 ' Releasing Objects If Not oFSO Is Nothing Then Set oFSO = Nothing If Not oFile Is Nothing Then Set oFile = Nothing End FunctionThe function is not restricted to Excel files alone and can be used for any kind of files
Once You are done you can Check Workbook Attributes to confirm if the Workbook is ReadOnly