Добрый день, форумчане. Пытаюсь подключиться к серверу FTP средствами vba. Есть данные: Host: ftps.host_name.ch Username: user_n Password: password Port : 990
Подключалась с помощью far, все в порядке.
При использовать api функций InternetOpen и InternetConnect(использовала http://www.codenet.ru/progr/vbasic/FTP.php ) первая отрабатывает. а вторая нет. Не знаю. в чем может быть причина. у меня сейчас только одна догадка: в FAR выбираю encryption: SSL/TLS Implicit encryption, а в функции InternetConnect такого параметра вообще нет.
Как бы...Какое отношение к Excel имеет вопрос? Я не против, просто интересно. Вы сослались на API, однако не утрудились хоть мельком упомянуть код, при помощи которого делаете это в Excel Вы(то, откуда взят код мы видим, но не факт, что Вы все сделали правильно). И что значит "не отрабатывает"? Просто не подключается, выдает ошибку, еще что?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Уважаемый The_Prist , поскольку код пишу на vba в excel, поэтому посчитала, что к excel имеет отношение. код следующий
Код
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 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 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
Public Sub for_ftp()
hINetSession = InternetOpen("MyFTPClient", 0, vbNullString, vbNullString, 0)
hSession = InternetConnect(hINetSession, "ftps.host_name.ch", _
"990", "usr_n", "password", 1, 0, 0)
Там много всяких тонкостей. У папки с файлом должны быть права на чтение, запись, редактирование. Если для папки эти права не установлены - закачать файл не получится, т.к. ftp отклонит запрос. Задайте через htaccess или иным методом права для папки и вложенных файлов/папок 777 и попробуйте. Если не поможет - надо трассировать тип ошибок(включите переменную, отвечающую за ответ функции - последний аргумент, вроде бы)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...