使所有文件和一个文件夹和所有子文件夹只读
我有一个文件夹包含多个文件夹,其中包含多个文件。 我想使用Excel 2010中的macros来使所有文件夹中的所有文件都是只读的。 我试过下面的代码,但当我一步一步通过它,我发现sFile
永远不会填充string和实习生无法正常工作。
Sub setFileReadOnly() Dim sPath As String Dim sFile As String sPath = "c:\temp\" sFile = Dir(sPath & "*.*") Do Until sFile = "" SetAttr sPath & sFile, vbReadOnly sFile = Dir Loop End Sub
你需要一个recursion过程来调用它来启动这个过程。 Dir
函数不应该recursion使用。 在向Microsoft脚本运行时添加引用(工具 – >引用)之后,请尝试此代码。
Sub Main() Dim sPath As String sPath = "c:\temp\" Call setFileReadOnly(sPath) End Sub Sub setFileReadOnly(sPath As String) Dim sFile As String Dim sSubFolder As String Dim fsoObject As Scripting.FileSystemObject Dim folderObject As Scripting.Folder Dim fileObject As Scripting.File Set fsoObject = New Scripting.FileSystemObject For Each folderObject In fsoObject.GetFolder(sPath).SubFolders Debug.Print folderObject.Path Call setFileReadOnly(folderObject.Path & "\") Next folderObject For Each fileObject In fsoObject.GetFolder(sPath).Files Debug.Print sPath & fileObject.Name SetAttr sPath & fileObject.Name, vbReadOnly Next fileObject End Sub
我留在了Debug.Print
语句中。
最简单的方法是在脚本运行时使用FileSystemObject。 您需要添加对Microsoft脚本运行时的引用,或更改代码以使用后期绑定。 设置开始文件夹后,可以轻松recursion所有子文件夹:
Sub SetFilesReadOnly(Optional location As Folder) Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject If location Is Nothing Then Set location = fso.GetFolder("C:\Temp") End If Dim target As File For Each target In location.Files target.Attributes = target.Attributes + ReadOnly Next target Dim directory As Folder For Each directory In location.SubFolders SetFilesReadOnly directory Next directory End Sub
- Pythonpandas不能读取一些奇怪的编码和拆分窗格旧的Excel文件
- VBA ScaleHeight 2003 vs 2013
- 检查excel单元格是否被locking的方法是什么?
- 运行时错误“1004”:object'_Global的方法'Range'失败
- 代码优化 – Excel VBA收集和收集sorting
- Microsoft Excel 2013 ScreenUpdating失败
- VBA错误运行时错误9下标超出范围
- 错误1004在行d =工作表(A(i))。单元格(B(j),l)+ d
- 来自ALBPM的COM集成 – 无法find“{00020906-0000-0000-C000-000000000046}”的IDispatch