|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007): 2010
* 아래줄에 질문을 작성하세요 >> 폴더내에 날짜만 계속 변경되면서
파일이 계속적으로 생성되는데
이걸 폴더에 직접 들어가서 열 필요없어
폴더경로 지정해놓고
폴더내에 가장 최신받은 파일만 열게끔 하는 vba코드를 알고 싶어요
strPath = "경로"
strFile = strPath & 엑셀파일이름"
Workbooks.Open Filename:=strFile
이런 식으로 파일 여는 건 알겠는데 최근 생성된 파일 여는
vba를 알고 싶습니다
어떻게 하면 되나요?
==============[김진우님 글에 대한 답변입니다]==============
다음 사용자정의함수를 모듈에 추가하시기 바랍니다.
지정된 폴더와 파일 이름 패턴을 만족하는 파일들 중에서
가장 최근에 생성된 파일의 이름을 반환해 줍니다.
따라서
Workbooks.Open Filename:=LastFile(strPath & "\*.xls*")
와 같이 호출하면, strPath로 지정된 경로에서 가장 최근에 생성된
엑셀 파일을 열어줄 것입니다.
===================================
Function LastFile(Optional mask As String = "") As String
Dim c As Integer
Dim fname As String
Dim fdate As Date
Dim LastDate As Date
Dim NotAttr As Integer
NotAttr = vbSystem + vbDirectory
' 시스템 파일이나 디렉토리명은 처리 대상에서 제외하기 위함
For c = Len(mask) To 1 Step -1
If Mid(mask, c, 1) = "\" Then Exit For
Next c
If c > 0 Then
ChDir Left(mask, c - 1)
mask = Mid(mask, c + 1)
End If
LastDate = 1
fname = Dir(mask) ' 지정한 폴더에서 첫번째 파일 찾음
Do While fname <> "" ' Start the loop.
If Not (GetAttr(fname) And NotAttr) Then
' 시스템파일이나 디렉토리명은 제외하고 처리
fdate = FileDateTime(fname)
' 해당 파일의 생성 날짜/시각을 읽어서 최댓값을 검색함
If fdate > LastDate Then
LastDate = fdate
LastFile = fname
End If
End If
fname = Dir() ' 다음 대상 파일명 찾기
Loop
End Function
|
|