Ejecutar comandos de FTP, desde Visual Basic

Envienmen un ejemplo, mi dirección es: [email protected], es urgente.
Necesito realizar un programa en VISUAL BASIC, que al correr el programa automáticamente el me extraiga un archivo de otra computadora conectada en red, tengo que utilizar ftp, actualmente yo lo puedo hacer (a pie), o sea, entro al MS-DOS y le doy los comandos de ftp y extraigo el archivo, esto es lo que hago:
ENTRO A FTP:
C:\WINDOWS>ftp
ME CONECTO A LA OTRA COMPUTADORA:
ftp> open 192.36.66.6
Introduzco el login:
Producto
Introduzco el password:
Proceso
Pido un directorio de la pc remota:
ftp> dir
ME VOY AL SUBDIRECTORIO DONDE ESTA EL ARCHIVO:
ftp> cd /products/data/internDatas
TRASMITO EL ARCHIVO:
ftp> get coilList c:\Ruber\coilList
Entonces, lo que necesito es que al ejecutar el programa el me haga automáticamente todo este procedimiento.
Ayudenme por favor, no soy muy buen programnador.

1 respuesta

Respuesta
1
Te envío por correo el mismo ejemplo que te di, preo con tus datos, yo desde acá no tengo acceso a esa dirección IP de tu red, esi que lo tienes que probar vos.
Es fácil y siempre utilice esto para bajar y subir archivos a los servidores web por FTP.
Ok...
Ya entre a las Propiedades de Inet1, me aparecen 2 opciones:
1)General
2)Dirección URL
1)General: Me apareceN
- Tipo de acceso: ¿Cuál escojo?.
.- 0-icUsedefault
.- 1-icDirect
.- 2-icNamedProxy
- PROXY: ¿Qué escribo aquí?.
- request timeout: 60
2)Dirección URL:
- URL:
- Protocol:
- Remote Host: ¿Aqui coloco la direccion Ip de la PC remota?.
- Remote Port: 21
- Documnt:
- UserName:
- Password:
Por favor explicame detalladamente cada opción que debo incluir.
Para ir a las propedades solo seleccionas el control y presionas F4, si lo has echo con el botón derecho del mouse, selecciona Protocol en la pestaña General, ahí le pones la opción 2 que es la de FTP, el resto de las propiedades no las cambies, eso la haces por código.
Dime si te llego el ejemplo que te envíe por email, ahí ya esta todo configurado con tus datos.
Cualquier duda estoy a tu disposición.
Hola.
Si me llego el E_mail con el ejemplo, ahora tengo una duda, en el Form1 donde me aparece Text1, ¿hay escribo en nombre del archivo a bajar?, ademas cuando hago eso no me aparece el caso de Conectando.., ni tampoco Encontrado. }
No me esta funcionando, ayudame.
En el Text 1 deje solo un textoque te va indicando lo que esta pasando, el nombre del archivo a bajar y donde lo bajas lo pones directamente en el código de botón en la linea que dice:
.Execute , "GET /products/data/internDatas/coilList c:\Ruber\coilList"
Luego de GET va el nombre del archivo con su ruta completa, y luego de un espacio va el desino del archivo en tu maquina, fíjate que te lo deje con los datos que vos me enviaste, si el archivo es otro, cambialo.
Luego de que esto te funcione, si quieres que no se vea nada en pantalla, hace doble click en el objeto Inet1 y borra el código que tenga dentro de ese evento.
De esa manera te desligas del uso de ese textbox que te indica el estado.
Esto lo tengo andando en varios programas y funciona muy bien.
Supongo que el archivo que quieres copiar se encuentra en un servidor de internet, o lo haces a través de internet, te pregunto porque si es una intranet o una red local se puede usar un método para copiar mucho más sencillo, sin FTP.
Efectivamente es una red local, fíjate que así es como yo estoy trasmitiendo el archivo actualmente:
Desde c:\ realizo las siguientes operaciones:
C:\WINDOWS>ftp
ME CONECTO A LA OTRA COMPUTADORA:
ftp> open 192.36.66.6
Introduzco el login:
Producto
Introduzco el password:
Proceso
Pido un directorio de la pc remota:
ftp> dir
ME VOY AL SUBDIRECTORIO DONDE ESTA EL ARCHIVO:
ftp> cd /products/data/internDatas
TRASMITO EL ARCHIVO:
ftp> get coilList c:\Ruber\coilList
Entonces, lo que necesito es que al ejecutar el programa el me haga automáticamente todo este procedimiento.
Te puedo decir que la maquina remota (donde esta el archivo), es una ESTACIÓN DE TRABAJO (controla un proceso de producción industrial), esta en ambiente UNIX (aunque creo que esto no interesa, porque lo que necesito es extraer el archivo).
Si me puedes enviar algún ejemplo, estoy en la oficina esperando la respuesta.
Me parece que lo mejor va a ser que sigas con FTP, eso que te envíe te tiene que funcionar, por lo visto la tuta y el nombre de archivo están bien, y el control Inet1 te ejecuta esos comandos FTP tal como lo haces de DOS, la otra opción, so es una red local es utilizar el nombre del servidor y asignar recursos compartidos, como cualquier maquina que tenga windows, vos solo copiarías un archivo con una ruta de este tipo:
\\servidor\c\archivo
Pero si el servidor es UNIX lo mejor es el FTP, decime que paso con lo que te envíe, te tendría que funcionar.
Yo también quedo acá esperando
Si tienes el messenger a mano, ingresa que te ubico desde acá.
Este es el programa que me mandaste:
Private Sub Command1_Click()
With Inet1
.URL= "ftp://producto:[email protected]/"
.UserName = "producto"
.Password = "proceso"
.Execute , "GET /products/data/internDatas c:\Ruber\coilList"
End With
End Sub
Private Sub Command2_Click()
Label1 = NumeroLetras(Str(Text1.Text))
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False
Select Case State
Case 1
TxtData.Text = "Buscando"
Case 2
TxtData.Text = "Encontrado"
Case 3
TxtData.Text = "Conectando..."
Case 4
TxtData.Text = "Conectado!!"
Case 12
TxtData.Text = "Bajando Archivo"
End Select
End Sub
El programa se queda en bajando el archivo y nunca lo baja, no entiendo.
Hay alguna manera de que cuando corra el programa el me muestre el directorio de la otra maquina, para así saber que entre a la otra maquina.
Espero tu respuesta.
Aquí en la empresa tienen cerradas las página de correos gratuitos.
Si te muestra el mensaje de "Bajando Archiv" es porque esta funcionando todo bien, se logro conectar con el servidor por ftp y este tomo bien el nombre de usuario y password y el comando GET, lo que veo que falta es el nombre del archivo, fíjate en esta linea, ai esta con el archivo, como vos me enviaste no.
.Execute , "GET /products/data/internDatas/coilList c:\Ruber\coilList"
Revisa esa instrucción, pero te digo que ya esta funcionando!
No se porque, pero ahora se queda pegado en Conectando..
Por favor revisa bien las instrucciones, yo he intentado de varias maneras y no se que pasa.
Estoy esperando tu respuesta
Por favor, ayudame.
Todavía no me funciona, por favor revisa bien detalladamente este programa.
El Lunes regreso aquí a mi trabajo y continuare en este proyecto, quisiera que me ayudaras a completar bien esta rutina, realizar un CASE que me indique que ya bajo el archivo.
Gracias por toda la ayuda que me haz prestado.
Te recuerdo mi correo, [email protected]. Si me pudieras enviar una explicación bien detallada del programa te lo agradecería infinitamente.
Sinceramente no soy buen programador y necesito de su ayuda.
Muchas Gracias.
Hola.
Ya solucione el problemita que tenia, estoy bajando el archivo exitosamente, (solo si esta en el directorio principal)ahora tengo 2 preguntas:
Pregunta 1:
¿Puedo bajar un archivo que este en un subdirectorio?, sera que si hago esta instrucción el se va al subdirectorio especificado:
<Ejemplo>
.Execute , "CD /Reyes/Zambrano/Ruber"
Pregunta 2:
Ahora necesito que después de bajar el archivo, abrirlo en una hoja de excel y arreglar el tipo de letra, tamaño etc, y mandarlo a imprimir (algo así como ejecutar una MACRO en Excel).
Estoy en la oficina, esperando respuesta.,
Gracias por su valiosa ayuda.
Me alegro que te funcione, y si, te tiene que bajar directamente un archivo si pones su ruta y nombre de archivo, yo utilizo directamente rutas como las que vos pones para bajar archivos y no tiene problemas.
Lo de las macros de Excel, es algo que nunca utilizo, pero te puedo decir como abrir el archivo desde Visual.
Primero tienes que agregar en el menu donde dice Proyecto, selecciona Referencias, en esa ventana busca y selecciona "Microsoft Excel xx Object Library" xx es la version que vos tengas instalada.
Luego con este código podes abrir el archivo de excel y podes ejecutar una macro, si existe en el archivo.
Dim xls As Excel.Application
Dim hoja As Excel.Worksheet
Set xls = New Excel.Application
xls.Workbooks.Open "Ruta/archivo.xls", , True
xls. Application. Run "Libro1.xls!ThisWorkbook.TuMacro"
Con esto te abre la hija de excel y ejecuta la macro "TuMacro", vos solo tienes que cambiar los nombres por los tuyos.
En este momento estoy en un lugar donde no tengo instalado el excel, Visual basic lo utiliza para ejecutar estos comando, así que no podría probar, pero esto lo saque de una aplicación donde lo tengo funcionando.
Te explico bien, el archivo que quiero abrir en excel es el que estoy bajando..
O sea, este archivo no tiene extensión, y quiero abrirlo en una hoja de excel.
Este archivo contiene las características del producto que se ha procesado, y la idea es que la persona que se encarga de revisar esta información (oprima el botón BAJAR ARCHIVO) y le muestre el archivo presentado en una hoja de excel.
La rutina que me distes para abrir excel no me funciona .
Estoy en la oficina esperando tu respuesta.
Gracias por tu ayuda.
Estoy corriendo el programa así:
Private Sub Command1_Click()
With Inet1
.URL = "ftp://producto:[email protected]/"
.UserName = "producto"
.Password = "proceso"
.Execute , "GET IMSmenu c:\Ruber\IMS"
End With
End Sub
Private Sub Command2_Click()
Label1 = NumeroLetras(Str(Text1.Text))
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False
Select Case State
Case 1
TxtData.Text = "Buscando"
Case 2
TxtData.Text = "Encontrado"
Case 3
TxtData.Text = "Conectando..."
Case 4
TxtData.Text = "Conectado !!!"
Case 5
TxtData.Text = "Bajando Archivo"
End Select
End Sub
Dim xls As Excel.Application
Dim hoja As Excel.Worksheet
Set xls = New Excel.Application
xls.Workbooks.Open "C:\Ruber\tita.xls", , True
xls.Application.Run "Libro1.xls!ThisWorkbook.TuMacro"
Y al correr el programa me sale el siguiente cuadro de dialogo:
Error de compilación
Los comentarios solo pueden aparecer despues de End Sub, End Function o End Property.
Saludos, Ruber Reyes [email protected]
El error que te da debe ser problema del archivo de excel, si no es un archivo de excel te va a dar ese error, y si no tiene una macro para ejecutar, también.
Decime en que formato esta el archivo que bajas del servidor, si no es excel te conviene directamente abrirlo con Visual en un grid, de esa manera hasta es más fácil la impresión.
Si quieres enviame una copia de uno de esos archivos para mirar su formato, así te digo como lo tienes que abrir.
Ok, te voy a enviar el archivo a tu correo hotmail, para que lo revises.
La idea del programa es que la chica que tiene que revisar el Reporte de la Bobina, solo tenga que entrar a la oficina y oprimir el botón de mostrar el archivo, y el programa realice el procedimiento de bajarlo, acomodarlo en una hoja de excel y mostrarlo y ademas si la chica lo quiere imprimir que lo haga.
Gracias por todo. Infinitas gracias.
Apenas lo reciba lo miro y te envío como abrirlo.
Disculpame por no enviarte ayer el correo, pero es que se me extravío tu dirección e_mail, por favor enviame tu dirección y yo te envío el archivo para que lo revises.
Ahora puedo utilizar correo gratuito de mipunto.com, y apenas me envíes tu dirección yo te voy a enviar el archivo.
Estoy esperando.
Saludos Ruber Reyes
Esta es mi nueva dirección e_mail: [email protected]
Por las dudas te envíe un correo, así te queda mi dirección para responder.
¿De dónde sos?
Yo estoy en Argentina, y por lo visto tenemos horarios parecidos.
Estoy esperando tu respuesta.
Yo trabajo en Puerto Ordaz, Venezuela, en una empresa que queda en la cercanías del Rios Orinoco, a unas 6 horas de La Gran Sabana.
Saludos
Ruber Reyes
Me olvide de preguntarte si ya pudiste compilar tu aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas