我有一个包含多个文件夹的文件夹,其中包含多个文件。我想使用excel 2010中的宏来使所有文件夹中的所有文件都只读。我尝试了下面的代码但是当我逐步完成它时,我发现sFile
永远不会填充字符串而实习生不起作用。
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
答案 0 :(得分:3)
您需要一个递归过程以及另一个调用它来启动过程的过程。不应以递归方式使用Dir
函数。在向Microsoft Scripting Runtime添加引用(工具 - >引用)后尝试此代码。
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
声明。
答案 1 :(得分:1)
最简单的方法是使用脚本运行时中的FileSystemObject。您需要添加对Microsoft Scripting Runtime的引用或更改代码以使用后期绑定。设置起始文件夹后,您可以轻松递归所有子文件夹:
np.exp(pd.expanding_sum(np.log(temp_col)))