2013-06-10 4 views
0

나는이 물건에 상당히 익숙하기 때문에 거기에있는 누군가가 나를 도와 줄 수 있기를 바랍니다.Access/VBA에서 조건부로 가져 오기 가져 오기

설치 : 데이터를 가져 오는 Access 2007 데이터베이스가 있으며 쿼리 집합을 수행하고 매월 결과를 내 보냅니다.

월간 데이터는 Excel 스프레드 시트 또는 텍스트 파일의 "현재"폴더에 저장됩니다. Access에서 테이블로 추가하는 프로세스를 용이하게하기 위해 각 파일에 대해 다소 지루한 가져 오기 단계를 저장했습니다.

가져올 파일이 너무 많아서 저장 한 가져 오기를 모두 한 번에 실행하는 간단한 VBA 코드를 작성했습니다.

Public Sub DatabaseImp() 
DoCmd.RunSavedImportExport "Import-Excel1" 
DoCmd.RunSavedImportExport "Import-Excel2" 
DoCmd.RunSavedImportExport "Import-Txt1" 
DoCmd.RunSavedImportExport "Import-Txt2" 
DoCmd.RunSavedImportExport "Etc....." 
End Sub 

또한이 코드를 실행하기위한 매크로를 만들었고 모든 것이 잘 작동합니다.

하지만,

문제점 : 달에 따라 특정 파일이 '현재'폴더에 포함됩니다 다른 사람이되지 않습니다.

예를 들어 이번 달에 데이터베이스로 가져올 'Excel2'파일이 없다고 가정 해보십시오.

어쨌든 위의 코드를 수정하여 가져 오기를 수행하려고 시도 할 수 있습니까?

나는 'Excel2'가져 오기를 무시하고 수동으로 간단히 처리 할 수 ​​있음을 알고 있습니다. 그러나 나는 자동화 된 프로세스를 유지하고 싶다.

나는 조건의 어떤 종류를 찾고 있어요 IF I 각 줄의 끝 부분에 추가 할 수 있습니다 문, 예컨대 :

DoCmd.RunSavedImportExport "Import -Excel1" 
(ONLY IF there is an excel1 file in the 'current' folder to import) 

아이디어, 누구?

감사합니다.

답변

1

Dir 명령을 사용할 수 있습니다. 결과가 빈 문자열이면 존재하지 않습니다.

따라서 Windows 컴퓨터에서 Dir("C:\Windows\explorer.exe")은 explorer.exe를 반환하지만 Dir ("C : \ Windows \ bumblebee.exe")는 ""을 반환합니다.

그래서 If 문을 설정하십시오.

If Len(Dir(YourFile)) > 0 then 
    DoCmd.RunSavedImportExport "Import -Excel1" 
End if 
+0

정말 고맙습니다. 고마워요. 나는 그날 하루 일을 끝냈다. 그러나 나는 내일 첫 시도를 할 것이다! – Cabral

+0

반갑습니다. –

+0

업데이트 : if 문이 완벽하게 작동했습니다. 문제 해결됨! – Cabral

관련 문제