我想将文件夹中的每个工作簿重命名为工作簿中第一个工作表的名称。例如,如果工作簿被称为“71107”并且该工作簿中的工作表被称为“foobar”,我希望将工作簿重命名为“foobar”。
我目前的进展如下:
Sub RunMe()
Dim objFSO As New FileSystemObject
Dim objWkbk As Workbook
Dim objFile As File
Dim folderpath As String
Application.ScreenUpdating = False
folderpath = "D:\test\"
For Each objFile In objFSO.GetFolder(folderpath).Files
oldpath = objFile.path
Set objWkbk = Workbooks.Open(oldpath)
newpath = path & "NEWNAME\" & ActiveSheet.Name & ".xls"
objWkbk.SaveAs Filename:=newpath
objWkbk.Close
Next objFile
End Sub
此代码运行速度非常慢(每个文件大约10秒)。我的文件不大,每个只有大约40kb。有更快的方法来执行此操作吗?我也不需要保存每个文件的新副本,我很高兴只重命名我不知道的文件。
答案 0 :(得分:-1)
有两件事,需要很长时间才能打开和保存。 如上所述,可以使用ADO避免公开,更多详细信息为here
然后您也不能使用SaveAs,因为它没有打开,但您可以使用以下内容重命名该文件:
Name GivenLocation & OldFileName As GivenLocation & NewFileName