我正致力于通过Excel工作簿自动执行采购订单的保存程序。而不是用户必须将模板复制到正确的目录,并使用序列中的下一个正确的订单号重命名它与日期(例如,之前的订单是订单号SJ-K1880放置在2016年7月7日的文件名KO_SJ-K1880_070716,所以下一个订单号将是2016年7月11日放置的SJ-K1881,文件名为KO_SJ-K1881_110716),用户只需单击“保存”按钮,它就会将工作簿保存在右下方的正确目录中文件名自动跟随序列。以下是一个此类文件的完整目录示例:
C:\Users\User\Desktop\Kyocera Order Doc\
Kyocera Orders\Orders 2016\07 July 2016\
KO SJ-K1880 070716\KO_SJ-K1880_070716.xlsm
使用当前日期,我已设法检查目录是否存在,直到07 July 2016
并创建它,如果它不存在。我的问题在于找到该目录中的最后一个文件夹(在此示例中为KO SJ-K1880 070716
)并使用它来确定下一个订单号将是什么。
答案 0 :(得分:1)
这似乎可以为您提供所需的内容,但它依赖于升级的文件夹名称。
Option Explicit
Sub main()
Dim fldr As String
fldr = Environ("USERPROFILE") & _
"\Desktop\Kyocera Order Doc\Kyocera Orders\Orders 2016\07 July 2016"
Debug.Print mostRecentFolderNdx(fldr)
End Sub
Function mostRecentFolderNdx(base As String)
Dim f As String, lstndx As String
f = Dir(base & "\*", vbDirectory)
Do While CBool(Len(f))
If Not CBool(InStr(1, f, Chr(46))) Then
lstndx = Split(f, Chr(32))(UBound(Split(f, Chr(32))))
End If
f = Dir
Loop
mostRecentFolderNdx = lstndx
End Function
如果您要依赖升序排序,最好让您的文件夹使用\20160707\
而不是\07 July 2016\
等命名约定。