在有些情形下,我们可能需要找到指定文件夹中最新保存的工作簿,然后对其进行处理。例如,每天上班前系统会自动生成一个工作簿并保存到某文件夹中,而某位员工每天上班后需要从该文件夹中打开这个新生成的工作簿来提取数据,这样程序需要根据工作簿保存的时间找到这个最新保存的工作簿,然后再对其进行处理。
下面的程序可以返回指定文件夹中最新保存的工作簿名称:
'获取指定文件夹中除当前工作簿外
'最新保存的工作簿的文件名
Function GetLastWorkbook(sPath As String) As String
Dim wb As Workbook
Dim sFile As String
Dim fs As Object
Dim objFile As Object
Dim strMsg As String
Dim tm As Date
Dim sName As String
'如果文件路径中没有反斜杠则添加
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
'获取文件
sFile = Dir(sPath & "*.xls*")
Set fs =CreateObject("Scripting.FileSystemObject")
SetobjFile = fs.GetFile(sPath & sFile)
tm = 0
'遍历文件夹中的文件
Do While sFile <> ""
Set objFile = fs.GetFile(sPath &sFile)
'如果文件不是本代码所在的工作簿且文件最近保存的日期大于上一文件保存的日期
If objFile.Name <>ActiveWorkbook.Name And objFile.DateLastModified > tm Then
'将该文件赋值给变量
tm = objFile.DateLastModified
'将该文件名赋值给变量
sName = objFile.Name
End If
'下一个文件
sFile = Dir
Loop
'返回值
GetLastWorkbook = sName
End Function
假设当前工作簿存放在指定要获取最新保存工作簿的文件夹中,可以使用下面的程序代码调用GetLastWorkbook过程:
Sub test()
Dim wbName As String
wbName =GetLastWorkbook(ActiveWorkbook.Path)
Debug.Print wbName
End Sub