'建立应用环境进程
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. 做了一道cf水题

    被一道cf水题卡了半天的时间,主要原因时自己不熟悉c++stl库的函数,本来一个可以用库解决的问题,我用c语言模拟了那个函数半天,结果还超时了. 题意大概就是,给定n个数,查询k次,每次查询过后,输出 ...

  2. 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)

    Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...

  3. ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) A

    2018-02-19 A. Palindromic Supersequence time limit per test 2 seconds memory limit per test 256 mega ...

  4. Django创建超级用户出现错误

    如果运行python manage.py createsuperuser出现一大堆错误代码 解决方案: 1.检查settings.py中的DATABASE配置确定正确性 2.执行python mana ...

  5. openwrt支持哪些c库?

    答: 至2019/3/22,支持两种,一种是glibc,另一种是musl-libc(openwrt默认使用musl-libc)

  6. #2718. 「NOI2018」归程 kruskal重构树

    链接 https://loj.ac/problem/2718 思路 我们希望x所在的连通块尽量的大,而且尽量走高处 离线的话可以询问排序,kruskal过程中更新答案 在线就要用kruskal重构树 ...

  7. Mysql优化知识点总结(转自CS-Notes)

    转载地址:https://github.com/CyC2018/CS-Notes/blob/master/notes/MySQL.md 一.索引 B+ Tree 原理 MySQL 索引 索引优化 索引 ...

  8. 在Jenkins中集成Sonarqube

    Analyzing with SonarQube Scanner for MSBuild Global Configuration This step is mandatory if you want ...

  9. 题解——Codeforces Round #508 (Div. 2) T1 (模拟)

    依照题意暴力模拟即可A掉 #include <cstdio> #include <algorithm> #include <cstring> #include &l ...

  10. Vue.extend构造器和$mount实例构造组件后可以用$destroy()进行卸载,$forceUpdate()进行更新,$nextTick()数据修改

    html <div id="app"> </div> <p><button onclick="destroy()"&g ...