Não é possível carregar o arquivo para FTP do VBA do Excel

1

Eu preciso automatizar o upload de arquivos para o servidor FTP a partir da macro do Excel.

Estou seguindo um caminho simples de criação de arquivo de script e, em seguida, executando o FTP.exe com comandos desse arquivo de script. O problema é que, se FTP.exe é executado a partir do script VBA, o arquivo não é carregado corretamente - ele é criado, mas tem 0 bytes no servidor. Mas quando eu executo o comando FTP do shell (com exatamente o mesmo arquivo de script), o arquivo é carregado corretamente.

Meu script parece com o seguinte:

Sub Przycisk1_Klikniecie()

TempScriptFile = "D:\Temporary\ScriptFile.txt"
SourcePath = "(local path)"
SourceFilename = "(local file)"

Set FSO = CreateObject("scripting.filesystemobject")

Open TempScriptFile For Output As #1
Print #1, "open (host)"
Print #1, "(user)"
Print #1, "(password)"
Print #1, "binary"
Print #1, "lcd " & SourcePath
Print #1, "put " & SourceFilename
Print #1, "bye"
Print #1, "exit"
Close #1

If FSO.FolderExists("C:\Windows\System32") = False Then
    Shell "C:\WINNT\system32\cmd /c ftp.exe -s:" & TempScriptFile, vbNormalFocus
Else
    Shell "C:\WINDOWS\system32\cmd /c ftp.exe -s:" & TempScriptFile, vbNormalFocus
End If

Kill TempScriptFile

End Sub

Ambiente: Windows 10, Microsoft Office 2013.

Como nota: o mesmo script funciona em duas máquinas diferentes (Win7 / Office 2007 e Win10 / Office 2016).

O que estou fazendo de errado?

Aqui está o log do FTP executado no Excel:

ftp> open <host>
Connected to <host>.
220 FTP Server
---> OPTS UTF8 ON
500 OPTS UTF8 not understood

User (<host>:(none)): 
---> USER <user>
331 Password required for <user>

---> PASS <password>
230 User <user> logged in
ftp> lcd <folder>
Local directory now <folder>
ftp> binary
---> TYPE I
200 Type set to I
ftp> put <file>
---> PORT 10,132,8,219,197,121
200 PORT command successful
---> STOR <file>
425 Unable to build data connection: Connection timed out
ftp> bye
---> QUIT
221 Goodbye.

Observe o 425 Unable to build data connection: Connection timed out . Por que isso acontece?

    
por Spook 11.05.2017 / 22:13

0 respostas