Страницы: 1
RSS
Vba&ftp
 
Подскажите можно ли в макросе прописать подключение к фтп серверу и передать ему файл? если да то как?
 
Вроде как из VBA через HTTP протокол такого не получится. В сети нашел следующее www.marshallsoft.com/fce4vb.htm  
Но это сторонняя библиотека. Если ставить на один комп, то думаю вполне приемлемо. Там подробнейший мануал и все необходимые файлы. Только все это добро на английском.
 
{quote}{login=zet3xxx}{date=25.10.2008 04:55}{thema=Vba&ftp}{post}Подскажите можно ли в макросе прописать подключение к фтп серверу и передать ему файл? если да то как?{/post}{/quote}Можно использовать встроенную в виндовс ftp.exe.  
А запускать ее функцией shell(), которая запускает любую программу из командной строки виндовс, лишь бы эта программа поддерживала эту строку. ftp.exe вроде поддерживает.
Bite my shiny metal ass!      
 
погуглив нашел нужный код:  
 
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 InternetOpen _  
  Lib "wininet.dll" Alias "InternetOpenA" ( _  
  ByVal sAgent As String, _  
  ByVal nAccessType As Long, _  
  ByVal sProxyName As String, _  
  ByVal sProxyBypass As String, _  
  ByVal nFlags 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 nService As Long, _  
  ByVal dwFlags As Long, _  
  ByVal dwContext As Long) As Long  
     
Private Const INTERNET_SERVICE_FTP = 1  
Private Const INTERNET_SERVICE_GOPHER = 2  
Private Const INTERNET_SERVICE_HTTP = 3  
Private Type FILETIME  
  dwLowDateTime As Long  
  dwHighDateTime As Long  
End Type  
 
Private Declare Function InternetCloseHandle _  
  Lib "wininet.dll" (ByVal hInet As Long) As Integer  
  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 * 260  
  cAlternate As String * 14  
End Type  
Sub GetFile()  
 
 
hINetSession = InternetOpen(ftp, 0, vbNullString, vbNullString, 0)  
hSession = InternetConnect(hINetSession, "192.168.1.17", "21", "username", "passw", INTERNET_SERVICE_FTP, 0, 0)  
If FtpGetFile(hSession, "\temp\1.rar", "c:\1\2\1.rar", False, 0, 1, 0) = False Then  
  MsgBox "Call to FtpGetFile Failed!"  
End If  
Call InternetCloseHandle(hSession)  
Call InternetCloseHandle(hINetSession)  
End Sub  
сделать скачивание по маске *.rar и чтобы скачивались файлы только за вчера
Страницы: 1
Читают тему
Наверх