'建立应用环境进程
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
'连接层,连接服务器
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
'切换目录
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
'查找函数
Private Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
Private Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
'查找数据结构
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As Currency
ftLastAccessTime As Currency
ftLastWriteTime As Currency
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
'下载函数
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
'上传文件
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
'断开链接
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Public Function DownLoadFile() As Boolean
'建立环境
lngINet = InternetOpen("My Ftp", 1, vbNullString, vbNullString, 0)
Debug.Print lngINet
'链接服务器
lngINetConn = InternetConnect(lngINet, host_url, 0, user_name, pass_word, 1, 0, 0)
'Debug.Print lngINetConn
If lngINetConn = 0 Then
MsgBox "连接服务器失败!", vbInformation, "NextSeven"
DownLoadFile = False
GoTo FailTag1
End If
'切换目录
cngdir = FtpSetCurrentDirectory(lngINetConn, root_folder & sub_folder) '目录
If cngdir = False Then
MsgBox "切换目录失败!", vbInformation, "NextSeven"
DownLoadFile = False
GoTo FailTag1
End If
Debug.Print cngdir '查找首个文件
Dim pData As WIN32_FIND_DATA
Dim FileName As String
FileName = remote_file
lngHINet = FtpFindFirstFile(lngINetConn, FileName, pData, 0, 0) If lngHINet = 0 Then
MsgBox "查找文件失败!", vbInformation, "NextSeven"
DownLoadFile = False
GoTo FailTag1
End If strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
blnRc = FtpGetFile(lngINetConn, strTemp, local_file_path, 0, 0, 1, 0)
If blnRc Then
DownLoadFile = True
Debug.Print "下载成功"
Else
Debug.Print "下载失败"
DownLoadFile = False
End If FailTag1:
InternetCloseHandle lngINetConn
FailTag2:
InternetCloseHandle lngINet
End Function
Public Function UpLoadFile() As Boolean
'建立环境
lngINet = InternetOpen("My Ftp", 1, vbNullString, vbNullString, 0)
Debug.Print lngINet
'链接服务器
lngINetConn = InternetConnect(lngINet, host_url, 0, user_name, pass_word, 1, 0, 0)
'Debug.Print lngINetConn
If lngINetConn = 0 Then
MsgBox "连接服务器失败!", vbInformation, "NextSeven"
UpLoadFile = False
GoTo FailTag1
End If
'切换目录
cngdir = FtpSetCurrentDirectory(lngINetConn, root_folder & sub_folder) '目录
If cngdir = False Then
MsgBox "切换目录失败!", vbInformation, "NextSeven"
UpLoadFile = False
GoTo FailTag1
End If
Debug.Print cngdir '查找首个文件
Dim pData As WIN32_FIND_DATA
Dim FileName As String
FileName = remote_file
'上传文件
blnRc = FtpPutFile(lngINetConn, local_file_path, FileName, 1, 0)
If blnRc Then
Debug.Print "上传成功"
UpLoadFile = True
Else
Debug.Print "上传失败"
UpLoadFile = False
End If
'断开
FailTag1:
InternetCloseHandle lngINetConn
FailTag2:
InternetCloseHandle lngINet
End Function

  

20170920xlVBA_FTP_UpDownLoad_DownLoad的更多相关文章

随机推荐

  1. emmc和ssd的区别【转】

    本文转载自:https://blog.csdn.net/hawk_lexiang/article/details/78228789 emmc和ssd eMMC和SSD主要是满足不同需求而发展出来的NA ...

  2. SOAP和WebService的那些事

    当初对这段历史有过一点研究,不过当初写得关于这部分历史的论文不知道被我丢哪儿去了,下面我用通俗一点的语言来话说一下这段历史吧,因为当初详细到具体人物具体时间的已经记不清了,所以这里写得不够专业,大家就 ...

  3. Windows 安装Java与配置环境变量

    window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...

  4. try finally 执行顺序问题

    有return的情况下try catch finally的执行顺序 在遇到Exception 并且没有catch的情况下finally语句块没有执行 System.exit(0),终止了 Java 虚 ...

  5. ssm项目中遇到微信用户名称带有表情,插入失败问题

    ssm项目中遇到微信用户名称带有表情,插入失败问题 问题 Mysql的utf8编码最多3个字节,而Emoji表情或者某些特殊字符是4个字节. 因此会导致带有表情的昵称插入数据库时出错. 解决方法 一. ...

  6. 使用python+ffmpeg+youtube-dl下载youtube上的视频

    一.准备工作 1.安装python,详见https://www.cnblogs.com/cnwuchao/p/10562416.html 2.安装ffmpeg,详见https://www.cnblog ...

  7. 良好的GUI设计指南

    一.设计指南 摘自:<需求分析与系统设计(第3版)> 7.1.2. 1. 用户控制 用户事件(菜单动作.鼠标点击.屏幕光标移动等)打开GUI窗口或调用程序:程序执行需要反馈到用户. 2.  ...

  8. 在centos6中编译安装httpd-2.4/搭建LAMP

    首先确保centos6安装平台安装一下环境: #yum groupinstall "Development  Tools" "Server Platform Develo ...

  9. NOIP2018退役祭

    退役感受 在写下这个标题的时候,我的心情是复杂的,无非就是感觉像对一位将要赶往战场的士兵说:"你的战争已经输掉了." 退役了,没有什么好说的.无论再怎么抱怨这题出的真烂也无法改变了 ...

  10. linux golang

    wget -c http://www.golangtc.com/static/go/go1.3.linux-386.tar.gz #下载32位Linux的够源码包 tar -zxvf go1.1.li ...