gpt4 book ai didi

excel - 在 VBA 中使用 FTP

转载 作者:行者123 更新时间:2023-12-04 21:08:14 24 4
gpt4 key购买 nike

我编写了 VBA 代码,它基于 Excel 数据(Websphere MQ 定义作业)为 IBM 主机创建了一个带有 Job-Code 的 .txt 文件。

如果能够通过 FTP 自动将此文件传输到主机,那就太酷了。此时我通过以下方式手动执行此操作:

(注释:LPAR = 主机名)

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 - File already opened.



到 LPAR 的连接在此时设置。但是“SetAttr...”有什么作用呢?这是输入完成的地方吗?我应该怎么办?

最佳答案

两件事情。

首先,您正在打开文件编号为 #fNum 的文件。来自 fNum = FreeFile() ,然后假设这将返回 1,如 Print #1 ETC。:

Open vPath & "\FtpComm.txt" For Output As #fNum
Print #1, "user *******" ' your login and password"

改变你所有的 Print #1Print #fNum .

其次,您打开文件进行 I/O,但从不关闭它。所以当然,当你尝试修改它的属性或删除它时,系统会提示它已经打开并正在使用中。解决方案是关闭文件——一旦你完成对文件的写入/读取,你应该总是这样做。
Close #fNum ' add this line
' Can now manipulate the file without risking conflict

Shell "ftp -n -i -g -s:" & vPath & "\FtpComm.txt " & vFTPServ, vbNormalNoFocus

SetAttr vPath & "\FtpComm.txt", vbNormal
Kill vPath & "\FtpComm.txt"

至于你的代码在高层次上做什么:如果你输入 ftp -help在命令行,你会看到那些 -n -i -g -s旗帜的意思。所以是的,您正在将 FTP 命令写入文件 FtpComm.txt ,然后将该文件提供给 ftp通过 -s旗帜。
-s:filename    Specifies a text file containing FTP commands; the
commands will automatically run after FTP starts.

关于excel - 在 VBA 中使用 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7185844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com