2013-06-26 48 views
0

我在下面的第三行代碼中彈出了此錯誤。在互聯網上似乎沒有這種行爲的解釋。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)':對象 法「SetCurrentDirectory 'IReflectionFTP' 失敗

更多細節:

應用:Excel宏

語言:VB( VBA)

* 這是因爲編碼錯誤? *

不太可能。這個宏已經很長時間了,這是第一次出現。

* 是否因爲FTP服務中斷? *

可能是。但是日誌每秒鐘都會有記錄,並且似乎沒有中斷。

回答

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