STEP> 따라하기
오늘의 데일리 팁에서는 Dir()함수를 이용한 사용자 정의 함수 3종 세트를 소개합니다.
물론 DIR명령은 도스시절 가장 많이 사용하던 내부명령어였습니다. PC를 갖고 놀다 심심하면 툭툭 던져보는 명령어였습니다. 그런데 이 낡았지만 훌륭한 명령어를 아직도 VB/VBA에서는 Dir()함수로서 잘 사용하고 있습니다.
물론 특정 폴더의 내용을 탐색하기 위해 사용합니다. 대표적으로 파일의 존재여부를 확인하기 위해 다음과 같이 사용합니다.
'//---------------------------------------- |
위의 코드에서 Dir()함수에 존재유무를 확인하기 위한 파일의 이름을 매개변수(strFileName)를 던져 줍니다. 그래서 파일이 존재한다면 해당파일의 이름을 돌려주지만 아니라면 빈 문자열("")을 돌려주게 됩니다. 그래서 이것을 문자열의 길이를 알려주는 Len()함수로 확인하여 존재유무를 확인하는 것입니다.
Dir()함수는 파일 뿐만 아니라 디렉토리 즉 폴더의 존재유무를 확인하는 경우에도 사용합니다. 대신 매개변수로서 검색하려는 폴더명( *.* 포함) 뿐만 아니라 vbDirectory라는 vb상수를 추가해줍니다. 다음은 폴더 존재유무를 검색하는 사용자 정의 함수입니다.
'//---------------------------------------- '// Name Function DirExists(...) '// Description 폴더가 존재하는지 확인 '// Arguments strDirName As String-폴더명 '// Returns True-존재,False-존재않음 '//---------------------------------------- Function DirExists(ByVal strDirName As String) As Integer Dim strDummy As String On Error Resume Next If Right$(strDirName, 1) <> "\" Then strDirName = strDirName & "\" End If strDummy = Dir$(strDirName & "*.*", vbDirectory) DirExists = Not (strDummy = vbNullString) Err = 0 End Function |
그리고 마지막으로 폴더내 파일의 목록을 검색하는 기능을 다음과 같이 만들어서 사용할 수도 있습니다. 아래의 사용자 정의 함수 내용을 보시면 폴더의 내용을 검색하는 경우 Dir()함수를 2번 이상 사용하게 됩니다. Do~Loop를 돌기 전에 한 번 사용하고 Do~Loop안에서 또 사용을 한다는 점을 유의하시길 바랍니다.
‘//---------------------------------------- '// Name Function GetFileList(...) '// Description 지정한 폴더의 파일목록을 돌려줌 '// Arguments '// ...strDirPath As String - 검색할 폴더명 '// ...Optional strFileSpec As String = "*.*" - 검색할 파일 조건, 기본값(모든파일) '// ...Optional strDelim As String = "," - 돌려줄 파일목록을 구분하는 기호, 기본값(,) '// Returns 파일목록 문자열 '//---------------------------------------- Function GetFileList(strDirPath As String, _ Optional strFileSpec As String = "*.*", _ Optional strDelim As String = ",") As String Dim strFileList As String strDirPath = IIf(Right(strDirPath, 1) <> Application.PathSeparator, strDirPath & Application.PathSeparator, strDirPath) Do Until Len(strTemp) = 0 |
'VB' 카테고리의 다른 글
[VB] 파일 속성/버전 읽기 (0) | 2016.11.23 |
---|