2017-07-31 102 views
0

我有一個Excel宏,可以將文件從WinSCP FTP客戶端拉到我的本地C:\users\documents文件夾,但是,當我將文件路徑更改爲G:驅動器中的文件夾時,該shell不再自動運行由我的代碼創建的腳本。我的代碼創建了腳本,然後我必須手動去cmd並運行"ftp -s:" & sWorkingDirectory & FTP_BATCH_FILE_NAME以使文件從FTP傳輸到G:將文件從FTP下載到共享驅動器

這是我的代碼到目前爲止,有沒有人有什麼我應該做的建議?

Option Explicit 
Const FTP_ADDRESS = "ip address" 
Const FTP_USERID = "user" 
Const FTP_PASSWORD = "pw" 

Sub GetFile() 
    If Not GetFtpFile_F() Then 
     MsgBox "Error getting ftp file" 
    Else 
     MsgBox "Received" 
    End If 
End Sub 


Function GetFtpFile_F() As Boolean 
    Dim rc As Integer 
    Dim iFreeFile As Integer 
    Dim sFTPUserID As String 
    Dim sFTPPassWord As String ' 
    Dim sWorkingDirectory As String 
    Dim sFileToGet As String 

    Const FTP_BATCH_FILE_NAME = "PULLSCRIPT" 

    GetFtpFile_F = False 

    sWorkingDirectory = "G:\...\...\folder\" 
    sFileToGet = "file." & Format(Now(), "yyyyMMdd") 

    On Error GoTo FtpNECAFile_EH 

    'Kill FTP process file if it exists 
    If Dir(sWorkingDirectory & FTP_BATCH_FILE_NAME) <> "" Then 
     Kill sWorkingDirectory & FTP_BATCH_FILE_NAME 
    End If 

    'Create FTP process file 
    iFreeFile = FreeFile 
    Open sWorkingDirectory & FTP_BATCH_FILE_NAME For Output As #iFreeFile 
    Print #iFreeFile, "open " & FTP_ADDRESS 
    Print #iFreeFile, FTP_USERID 
    Print #iFreeFile, FTP_PASSWORD 
    Print #iFreeFile, "cd " & FTP_USERID 
    Print #iFreeFile, "mget " & sFileToGet 
    Print #iFreeFile, "y" 
    Print #iFreeFile, "quit" 
    Close #iFreeFile 

    'Shell command the FTP file to the server 
    Shell "ftp -s:" & sWorkingDirectory & FTP_BATCH_FILE_NAME 

    GetFtpFile_F = True 

    GoTo FtpNECAFile_EX 

FtpNECAFile_EH: 
    MsgBox "Err", Err.Name 

FtpNECAFile_EX: 

    Exit Function 
End Function 
+0

你有驅動器上的寫權限? – Zac

+1

只需創建一個功能,將文件從驅動器C移動到G: –

+1

https://msdn.microsoft.com/en-us/library/aa265015(v=vs.60).aspx –

回答

0

只是做更正如下圖所示 它的工作對我來說,希望能爲你工作,以及

Print #iFreeFile, "open " & "111.111.1111.111" 
    Print #iFreeFile, "[email protected]" 
    Print #iFreeFile, "********" 
    Print #iFreeFile, "cd " & "/data" 
    Print #iFreeFile, "lcd D:\mydata\test" 
    Print #iFreeFile, "mget *.csv" 
    Print #iFreeFile, "y" 
    Print #iFreeFile, "close" 
    Print #iFreeFile, "quit" 
    Close #iFreeFile 
    or 
    iFreeFile = FreeFile 
    Open sWorkingDirectory & FTP_BATCH_FILE_NAME For Output As #iFreeFile 
    Print #iFreeFile, "open " & FTP_ADDRESS 
    Print #iFreeFile, FTP_USERID 
    Print #iFreeFile, FTP_PASSWORD 
    Print #iFreeFile, "cd " & FTP_USERID 

    Dim FTP_mypath As string 
    FTP_mypath ="D:\mydata\test" 
    Print #iFreeFile, "lcd " & FTP_Mypath 
    Print #iFreeFile, "mget " & sFileToGet 
    Print #iFreeFile, "y" 
    Print #iFreeFile, "quit" 
    Close #iFreeFile 
+0

嗨請確認上面提到的更正是否適用於您 – Lalit