VB程序员博客

VB程序开发

Private Sub cmdshangbao_Click()
Dim i, j, k As Integer
Dim int_file As Integer
Dim filename As String
Dim filepath As String
Dim fso1, fso2
Dim fil1, fil2
Dim RetVal
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set fil1 = fso1.CreateTextFile("c:ftp_file.txt", True)
fil1.writeline ("open  192.168.1.120")
fil1.writeline ("user  audit01  123456 ")
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set fil2 = fso2.CreateTextFile("c:ftp_file.bat", True)
fil2.writeline ("ftp -in <  ftp_file.txt")
If Me.ListBox1.ListCount = 0 Then
    MsgBox "没有文件,退出!"
    Exit Sub
End If
int_file = Me.ListBox1.ListCount
For i = 0 To int_file - 1
    filename = Trim(Me.ListBox1.List(i))
    filepath = "put  " & ActiveWorkbook.Path & "" & filename & " " & filename
    fil1.writeline (filepath)
Next
fil1.writeline ("by ")

RetVal = Shell("c:ftp_file.bat", vbMaximizedFocus)  '这里总是报无效的过程调用或参数,为啥fil1.Close
fil2.Close
MsgBox "文件上传完成!"
Kill "c:ftp_file.txt"
Kill "c:ftp_file.bat"
End Sub

我在dos下执行c:ftp_file.bat完全正常,为什么?改为
RetVal = Shell("cmd /c c:ftp_file.bat", vbNormalFocus)
试试C/前后各一个空格,vbNormalFocus无所谓.我改成了RetVal = Shell("cmd /c c:ftp_file.bat", vbNormalFocus),
可以为什么出来的ftp命令成了:
d:>ftp -in  0 <ftp_file.txt
而bat中的文件内容为:ftp -in <ftp_file.txt
shell出来的结果多了个0,导致无法连接,为什么?
Shell("cmd /c c:ftp_file.bat")仅是调用cmd.EXE去执行c:ftp_file.bat文件,仅此而已. 去掉参数/c 试一下:
Shell("cmd c:ftp_file.bat")谢谢SYSSZ,已经找到原因
把这两句移到前面就没有问题了

fil1.Close
fil2.Close

RetVal = Shell("c:ftp_file.bat", vbMaximizedFocus) 

标签: , , ,


专题:

栏目: