Skills/Excel VBA

화일명 자동 참조하여 데이터 가져오기

섬그늘 2008. 11. 13. 14:33

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=3EyGLOqSHaN6aKDnS5LSfwWHz6QD0j7F

 

아래 코드를 참조하여 작업해 보세요. 제 나름대로 문제없이 데이타를 가져옴을 확인했습니다. (질문의 마지막 부분, '참조 파일들을 열지않고' 데이타를 가져오는 건 불가능할 것인 바, 사람이 일일이 화일을 열어주지 않더라도 VBA가 자동으로 열고 데이타 가져온 후 닫으면 될 것으로 이해했습니다.)

 

----------------------------------------------------------(이하를 복사, VBE에 붙이세요)

Sub 참조c10()
'
' 화일 순차 변수명 부여 열고 c10 가져오기
'
Dim mydata, mypath, Fname, strTemp, Sname As String
Dim i As Integer
i = 2
mypath = "D:\업무\생산관리업무\작업관리\"                  'QW....화일들이 들어있는 기본경로명
Sname = "Sheet1"                 'QW....화일 C10이 있는 시트명

'start

Do While Cells(i, 1) <> ""       'A2 부터 시작, A열이 빈칸이면 종료
If Cells(i, 3) = "" Then         'C열이 차 있으면 다음으로
strTemp = Cells(i, 4) & ".xls"                     'D열 화일명 + .xls
Fname = mypath & Mid(Cells(i, 4), 9, 2) & "\" & strTemp     '경로명+화일명
Workbooks.Open Fname, ReadOnly = True           '화일을 읽기전용으로 열기

mydata = Cells(10, 3)            'C10의 데이타 가져오기
Workbooks(strTemp).Close False   '화일 닫되 저장할 것인지 묻지도 않게 하기
Cells(i, 3) = mydata             'C열에 데이타 쓰기
End If
i = i + 1
Loop                             '행번호를 증가시켜 계속

End Sub
----------------------------------------------------------------(끝)

 

VB Editor 사용방법은 아시리라 보고 생략합니다. 다만 만약을 대비, 작업을 하실 땐 원본 QW...화일들을 다른 디렉토리에 복사, 백업을 받아 두신 후 하실 것을 추천합니다. 단, 위 코드 중

 

strTemp = Cells(i, 4) & ".xls"                     'D열 화일명 + .xls

 

에서 확장명이 .xls인지는 윈도우탐색기에서 화일명에 포인터, 오른쪽 클릭-속성...으로 확인하실 수 있습니다. (2008.02.13)