Excel - Subir a ftp desde excel

   
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

RE:Subir a ftp desde excel

Publicado por JuanC (1052 intervenciones) el 25/07/2010 00:59:41
te dejo el código como debería ir en un archivo...

http://www.sendspace.com/file/yjkvyi

Saludos, desde Baires, JuanC

PD: no lo probé...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subir a ftp desde excel

Publicado por akasma (11 intervenciones) el 27/07/2010 13:54:39
Gracias por contestar!!! Lo pruebo y te cuento!

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subir a ftp desde excel

Publicado por akasma (11 intervenciones) el 28/07/2010 08:16:34
Hola JuanC,

Podrías pasarme el código de la página, es que estoy en el trabajo y aquí no me deja abrirlo por temas de seguridad.Un copy/paste rápido y arreglado!!

Muchas gracias!!

Saludos desde el norte!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subir a ftp desde excel

Publicado por akasma (11 intervenciones) el 28/07/2010 10:50:10
Tengo un problema, aver si me podéis ayudar. Esta relacionado con enviar el ftp, el caso es que he encontrado un código que parece que es el correcto para que funcione, pero está digamos, desordenado, y como no se programar en VBA no se como ordenarlo. ¿Me podéis echar una mano?

Os pongo la página desde donde lo he cogido:

http://translate.googleusercontent.com/translate_c?hl=es&langpair=en|es&u=http://www.bygsoftware.com/Excel/VBA/ftp.htm&rurl=translate.google.es&usg=ALkJrhiihKbzMnxfg0kM1SeFcEvScvv_Vg

No creo que sea dificil ordenarlo pero si costoso, por ello os pido si podéis darme unas pautas para poder hacerlo. Por ejemplo, ¿Que hace #? ¿Y &? ¿Se pueden eliminar las comillas simples?

Muchas gracias.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subir a ftp desde excel

Publicado por Andyc (1 intervención) el 14/03/2013 07:36:42
El mensaje es viejo, pero por si a alguno le pasa como a mí, que le ha hecho falta y lo encuentra ahora, aquí os comento por qué falla. Si el directorio por defecto, como es el caso, contiene espacios en el nombre, no funcionan las cadenas en los archivos .bat ni el .txt del ftp. Hay que ponerlas entre comillas. Para esto, hay que cambiar un par de líneas:


En la que hay justo detras de ...FreeFile01, "binary":

Print #lInt_FreeFile01, "send " & ThisWorkbook.Path & ".\Prueba.txt"

Se puede quitar el ThisWork... y queda así:

Print #lInt_FreeFile01, "send " & ".\Prueba.txt"

(prueba.txt es el nombre del archivo que quieres subir)

Y en la línea:

Print #lInt_FreeFile02, "Echo ""Complete"" > " & strDirectoryList & ".out"

Hay que añadir comillas a la cadena strDirectoryList, y queda así:

Print #lInt_FreeFile02, "Echo ""Complete"" > """ & strDirectoryList & ".out"""

Espero haber sido de ayuda. Ah, y cuando copiéis el código a vuestro módulo, no os olvidéis de copiar el original en inglés, no la versión traducida, si no no os funcionará. Esto es, el código hay que copiarlo de

http://www.bygsoftware.com/Excel/VBA/ftp.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subir a ftp desde excel

Publicado por Rodanmuro (1 intervención) el 15/05/2013 01:48:53
Tal vez sea mi ignorancia, pero no me parece tan efectivo hacer el envío por la línea de comandos, es decir, si funciona, pero me parece que las funciones en general son un tanto limitadas. Creo que la versión oficial es la que se comenta en el primer post, en donde se usa la librería wininet.dll; sin embargo pese a todos mis esfuerzos no la he podido hacer funcionar.

El problema fundamental está en la función InternetConnectA, pues devuelve un valor de cero, cuando se hacen peticiones FTP(no importando si está en modo pasivo o no), y se produce el error 12029, que quiere decir que la conexión con el servidor no se ha podido establecer.

¿Alguien ha podido hacer que trabaje la librería wininet.dll en vba excel para conectarse con un servidor ftp?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar