Я написал код VBA, который создает TXT-файл с Job-Code для хоста IBM на основе данных Excel (Websphere MQ Define Job).
Было бы здорово иметь возможность автоматически передавать этот файл на хост через FTP. На данный момент я делаю это вручную через:
(комментарий: LPAR = Host-Name)
ftp <LPAR>
'user'
'password'
put 'dateiname'
Работает вполне нормально. Но я не знаю, как перенести это в код VBA. Я нашел похожий вопрос здесь и там было опубликовано это решение:
Public Sub FtpSend()
Dim vPath As String
Dim vFile As String
Dim vFTPServ As String
Dim fNum As Long
vPath = ThisWorkbook.path
vFile = "path"
vFTPServ = "<LPAR>"
'Mounting file command for ftp.exe
fNum = FreeFile()
Open vPath & "\FtpComm.txt" For Output As #fNum
Print #1, "user *******" ' your login and password"
'Print #1, "cd TargetDir" 'change to dir on server
Print #1, "bin" ' bin or ascii file type to send
Print #1, "put " & vPath & "\" & vFile & " " & vFile ' upload local filename to server file
Print #1, "close" ' close connection
Print #1, "quit" ' Quit ftp program Close
Shell "ftp -n -i -g -s:" & vPath & "\FtpComm.txt " & vFTPServ, vbNormalNoFocus
SetAttr vPath & "\FtpComm.txt", vbNormal
Kill vPath & "\FtpComm.txt"
End Sub
Я не уверен, полностью ли я понимаю код. Я думаю, что создаю фиктивный файл, FtpComm.txt, с пользовательскими данными и содержимым, и использую этот файл для открытия соединения и отправки данных.
Работает, как-то, до точки
*SetAttr vPath & "\FtpComm.txt", vbNormal*
Там я получаю сообщение об ошибке
Runtime-Error: 55 - Файл уже открыт.
На этом этапе устанавливается соединение с LPAR. Но что делает "SetAttr ..."? Это точка, где ввод сделан? Что мне делать?