2013-06-26 3 views
0

아래 오류 코드는 정확히 3 번째 줄에 나타납니다. 이 동작에 대해 인터넷에 대한 설명이없는 것 같습니다.VBA 오류 - Reflection.FTP.3

나는이 오류가 떠오른 이유를보고 몇 분 후에 스스로 해결했습니다.

Set Ftp = CreateObject("Reflection.FTP.3") 
Ftp.Open "xxx.xxx.xxx.xxx", "username", "password" 
Ftp.SetCurrentDirectory "DirectoryName/DirectoryName/DirectoryName" 

무엇이 오류입니까?

런타임 오류 '-2147418113 (8000ffff가)'

응용 프로그램 : 엑셀 매크로

언어 : VB (객체의 방법 'SetCurrentDirectory' 'IReflectionFTP은'

자세한 내용 실패 VBA)

* 코딩 오류가 발생 했습니까? *

아니요. 매크로는 오래 동안 실행되었으며 처음으로 나타났습니다.

* FTP 서비스가 중단 되었습니까? *

일 수 있습니다. 그러나 로그에는 1 초마다 기록이 있으며 정전이없는 것으로 보입니다.

답변

0

나에게 연결 문제가있는 것 같습니다. 아마도 타임 아웃일까요? 나는 당신의 세 줄의 코드가 하나씩 차례대로 실행하지 않는다고 가정한다 (즉, SetCurrentDirectory은 더 많은 코드를 따른다). 이 오류는 Ftp 객체에 로그인 된 유효한 연결이없는 경우 나타납니다. Open 명령의 IP를 잘못된 것으로 변경하면 동일한 오류가 표시됩니다.

SetCurrentDirectory 명령 전에 다음 코드 행을 설정해보십시오.

If FTP.Status = rcLoggedIn + rcConnected Then 
     Ftp.SetCurrentDirectory "DirectoryName/DirectoryName/DirectoryName" 
    Else 
     'Error handle 
    End If 

주, 그것은 당신을 위해 일하기위한 있도록 늦게 객체를 바인딩, 당신은 일하기 위해 If 문을해야합니다 :

If FTP.Status = 17 Then

을 또한,이 타임 아웃 인 경우 문제가 있다면 세션의 시간 초과 기간을 더 길게 설정할 것입니다. 즉, FTP.TimeoutSession = 300입니다.