2016-07-10 3 views
0

Excel 통합 문서를 통해 수행하는 구매 주문의 저장 절차 자동화 작업을하고 있습니다. 사용자가 템플릿을 올바른 디렉토리에 복사하고 날짜와 함께 순서의 다음 올바른 순서 번호로 이름을 바꾸지 말고 (예 : 이전 주문은 2016 년 7 월 7 일 파일 이름과 함께 주문 번호 SJ-K1880이었습니다 KO_SJ-K1880_070716이므로 KO_SJ-K1881_110716이라는 파일명으로 2016 년 7 월 11 일에 배치 된 다음 주문 번호는 SJ-K1881) 사용자는 저장 버튼을 클릭하기 만하면 통합 문서가 오른쪽 아래의 올바른 디렉토리에 저장됩니다 자동으로 시퀀스를 따르는 파일 이름.디렉토리의 마지막 폴더 폴더 이름 검색

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)에서 마지막 폴더를 찾아 다음 순서 번호를 결정하는 데 사용됩니다.

답변

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\ 같은 명명 규칙을 사용하게하는 것이 좋습니다.

+0

그래, "07 년 7 월 7 일"의 07은 그 달의 폴더를 참조하여 해당 디렉토리에있는 폴더가 월별로 정렬 될 수 있다고 언급 했어야합니다. 나는. 해당 디렉토리의 다른 폴더는 "2016 년 1 월 1 일", 2016 년 2 월 2 일 "입니다. ... "2016 년 7 월 7 일" 이게 뭐가 바뀌 었 니? –

+0

예, 신뢰할 수있는 오름차순 이름 정렬 순서를 유지하기에 충분해야합니다. – Jeeped

+0

정말 고맙습니다. 코드를 설명하는 주석을 추가 하시겠습니까? –