Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从ftp服务器下载数据未更新_Vba_Download_Ftp - Fatal编程技术网

Vba 从ftp服务器下载数据未更新

Vba 从ftp服务器下载数据未更新,vba,download,ftp,Vba,Download,Ftp,我使用下面的代码从FTP服务器下载数据,它工作正常,但数据没有更新。因此,当我下载文件时,如果该文件在服务器上更新,我再次下载它,它将更新该文件,但没有新数据(当我将其与服务器上同一文件上的数据进行比较时,我看到该日期已更新,但新数据不在文件中)。 此外,如果我在目标位置删除文件,它将再次下载,但还是原来的文件 我想它是从缓存的某个地方下载文件的 Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHi

我使用下面的代码从FTP服务器下载数据,它工作正常,但数据没有更新。因此,当我下载文件时,如果该文件在服务器上更新,我再次下载它,它将更新该文件,但没有新数据(当我将其与服务器上同一文件上的数据进行比较时,我看到该日期已更新,但新数据不在文件中)。
此外,如果我在目标位置删除文件,它将再次下载,但还是原来的文件

我想它是从缓存的某个地方下载文件的

    Const MAX_PATH = 260


Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type


Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type


 Private Declare PtrSafe 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 PtrSafe 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 PtrSafe 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 PtrSafe 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 PtrSafe Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
 "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) _
 As Boolean

Private Declare PtrSafe 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 PtrSafe Function InternetCloseHandle _
   Lib "wininet.dll" _
     (ByVal hInet As Long) As Integer



Sub Download_FTP()


Dim lngINetConn
Dim lngINet
Dim blnRC As Boolean
Dim username As String
Dim password As String
Dim serverName As String
Const ASCII_TRANSFER = 1
Const BINARY_TRANSFER = 2
Dim fData As WIN32_FIND_DATA
Dim Check1
Dim Check2


'****** Download 2G


    serverName = Worksheets("Settings").Cells(1, 6)
    username = Worksheets("Settings").Cells(3, 6)
    password = Worksheets("Settings").Cells(4, 6)
    localFile = Worksheets("Settings").Cells(5, 6)
    hostFile = Worksheets("Settings").Cells(2, 6)


blnRC = False


lngINet = InternetOpen("Microsoft Excel", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0) 'INTERNET_FLAG_ASYNC)


If lngINet > 0 Then

    lngINetConn = InternetConnect(lngINet, serverName, 0, username, password, 1, 0, 0)
    If lngINetConn > 0 Then

        fData.cFileName = String(MAX_PATH, 0)

        blnRC = FtpGetFile(lngINetConn, hostFile, localFile, False, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0)


        InternetCloseHandle lngINetConn
    End If
    InternetCloseHandle lngINet
End If

End sub

如果您从命令行手动使用ftp下载文件,您会得到想要的结果吗?请确保您没有被困在缓存代理之后。当我使用命令行时,我会得到更新的文件,但如果您仅从命令行手动使用ftp下载文件,则此代码会给我缓存的文件(未更新的文件),您会得到想要的结果吗?确保您没有被困在缓存代理后面。当我使用命令行时,我会得到更新的文件,但这段代码会给我缓存的文件(不是更新的文件)