Subir a ftp desde excel
Publicado por akasma (11 intervenciones) el 23/07/2010 12:24:09
Hola a tod@s!!!
Espero que me podais ayudar, tengo un excel con varias tablas, la primera de ellas se llama portada y desde ella se generan archivos txt de las otras tablas pulsando un boton. Lo que tengo que hacer es mandar esos archivos por ftp. Sería añadir un boton más que al pulsarlo se pudiese elegir el archivo y enviarlo a una direccion ya metida en el código.
Me he encontrado este codigo, pero no se como ponerlo ya que es VBA.
Gracias de antemano.
Saludos.
'Declaraciones
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 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 FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile 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
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_DEFAULT_FTP_PORT = 21
Const INTERNET_SERVICE_FTP = 1
Const PassiveConnection As Boolean = True
Const INTERNET_FLAG_PASSIVE = &H8000000
Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
Dim hConnection, hOpen, Num As Long
Private Sub Command1_Click()
SubirArchivo Direccion.text, Nombre.text, Password.text, Fichero.text, NuevoFichero.text
End Sub
Private Sub SubirArchivo(ByVal strDireccion As String, ByVal strNombre As String, ByVal strPassword As String, ByVal strFichero As String, ByVal strNuevoFichero As String)
hOpen = InternetOpen("IE", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
DoEvents
hConnection = InternetConnect(hOpen, strDireccion, INTERNET_DEFAULT_FTP_PORT, strNombre, strPassword, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
DoEvents
FtpSetCurrentDirectory hConnection, "\"
DoEvents
FtpPutFile hConnection, strFichero, strNuevoFichero, FTP_TRANSFER_TYPE_UNKNOWN, 0
DoEvents
InternetCloseHandle hConnection
InternetCloseHandle hOpen
End Sub
Espero que me podais ayudar, tengo un excel con varias tablas, la primera de ellas se llama portada y desde ella se generan archivos txt de las otras tablas pulsando un boton. Lo que tengo que hacer es mandar esos archivos por ftp. Sería añadir un boton más que al pulsarlo se pudiese elegir el archivo y enviarlo a una direccion ya metida en el código.
Me he encontrado este codigo, pero no se como ponerlo ya que es VBA.
Gracias de antemano.
Saludos.
'Declaraciones
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 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 FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile 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
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_DEFAULT_FTP_PORT = 21
Const INTERNET_SERVICE_FTP = 1
Const PassiveConnection As Boolean = True
Const INTERNET_FLAG_PASSIVE = &H8000000
Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
Dim hConnection, hOpen, Num As Long
Private Sub Command1_Click()
SubirArchivo Direccion.text, Nombre.text, Password.text, Fichero.text, NuevoFichero.text
End Sub
Private Sub SubirArchivo(ByVal strDireccion As String, ByVal strNombre As String, ByVal strPassword As String, ByVal strFichero As String, ByVal strNuevoFichero As String)
hOpen = InternetOpen("IE", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
DoEvents
hConnection = InternetConnect(hOpen, strDireccion, INTERNET_DEFAULT_FTP_PORT, strNombre, strPassword, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
DoEvents
FtpSetCurrentDirectory hConnection, "\"
DoEvents
FtpPutFile hConnection, strFichero, strNuevoFichero, FTP_TRANSFER_TYPE_UNKNOWN, 0
DoEvents
InternetCloseHandle hConnection
InternetCloseHandle hOpen
End Sub
Valora esta pregunta


0