excel - 使用 VBA 自动上传 FTP
问题描述
我正在尝试自动化以下过程:
- 数据从数据库导入 Microsoft Excel (
myfile.xls
) 并格式化。 - 文件另存为
myfile.txt
. - 通过上传
FTP
到服务器。
我已经完成了上传,但是在脚本中FTP
创建的批处理文件存在问题。VBA
我目前的脚本如下:
Dim MY_FILENAME As String
MY_FILENAME = "C:\user\sam\test" & "filename" & Format(CStr(Now), "yyyy_mm_dd_hh_mm") & ".BAT"
Dim FileNumber As Integer
Dim retVal As Variant
FileNumber = FreeFile
'create batch file
Open MY_FILENAME For Output As #FileNumber
Print #FileNumber, "FTP 00.0.000.000"
Print #FileNumber, "username"
Print #FileNumber, "password"
Print #FileNumber, "ascii crlf"
Print #FileNumber, "put " myfile.txt; " 'location'"
Print #FileNumber, "exit"
Close #FileNumber
'run batch file
retVal = Shell(MY_FILENAME, vbNormalFocus)
当我运行此脚本时,它会打开与服务器关联的 IP,但无法输入登录凭据。谁能告诉我哪里出错了?
解决方案
出了问题的是批处理文件首先ftp
以交互模式打开并且没有收到任何输入。如果ftp
woud 自行终止,您会注意到您的批处理文件然后继续执行指令username
等password
。这些并不是对 Batch 的指令,而是对ftp
的指令,但这不是 Batch 看到的方式。
要解决此问题,请将所有ftp
指令保存到第二个文件,然后ftp
以第二个文件作为输入参数调用 Batch:
Dim FileNumber As Integer
Dim retVal As Variant
FileNumber = FreeFile
'create batch file
Open MY_FILENAME For Output As #FileNumber
Print #FileNumber, "FTP -s<your-filename-here> 00.0.000.000"
Close #FileNumber
Open FTP_INSTRUCTIONS For Output As #FileNumber
Print #FileNumber, "username"
Print #FileNumber, "password"
Print #FileNumber, "ascii crlf"
Print #FileNumber, "put " myfile.txt; " 'location'"
Print #FileNumber, "exit"
Close #FileNumber
'run batch file
retVal = Shell(MY_FILENAME, vbNormalFocus)
推荐阅读
- elm - 是否有一个很好的模式来处理 elm 中的大量输入字段?
- django - 当 django 设置有两个时,Jenkins 只创建一个数据库
- kubernetes - Pod 的 Ingress Liveness 和 Readiness
- angular - 基于字符(字符串)Angular 7排序
- apache - .htaccess 需要最规则的内部错误 500 或允许来自任何地方
- java - Selenium 中的断言
- json - 用于创建资源的一对多关系的 JSON 请求示例
- azure - 如何从 Azure Batch .net 中的作业发布任务上传到 blob 容器
- aws-api-gateway - API 网关不会将认知令牌数据传递给 AWS Lambda
- go - ffmepg 将 m4a 转换为 wav 字节不起作用