Pregunta: | 4043 - ¿COMO UTILIZAR LAS FUNCIONES API PARA COPIAR ARCHIVOS? |
Autor: | Carla Flores |
Hola deseo hacer una copia de un archivo en un ambiente cliente/servidor, estoy utilizando la función API CopyFileA, la declaro pero la utilizo en el evento click de un botón, pero no hace nada este el código que estoy utlizando: Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long CopyFile "c:\imagenes\dibujo1.bmp", "\\b001_santana\C:\otras_imagenes\dibujo1.bmp", True Espero que puedan ayudarme, gracias de antemano |
Respuesta: | Daniel Morin |
Esto ya lo he respondidocon anterioridad; amigono te compliques la vida con las APIS, existe una manera de copiar archivos sin usar las apis y sin usar la instruccion shell, acontinuacion te explico como hacerlo:
1.-Agrega la siguiente referencia a tu proyecto: Microsoft Scripting Runtime 2.- El codigo es el siguiente: Dim RutaOrigen Dim RutaDestino RutaOrigen="C:MiCarpetaArchivo.doc" RutaDestino="\CarpetaRemota" Dim File_Fso as FileSystemObject Set File_Fso = New FileSystemObject File_Fso.CopyFile RutaOrigen, RutaDestino -----Recuerda que debes comprobar que tienes conexion con el punto remoto de lo contrario el codigo no funciona, puedes enviar un ping (señal de conección)al equipo remoto antes de copiar el archivo y si el valor de respuesta es 0 quiere decir que el equipo remoto esta listo para recibir, si el valor de respuesta es 1011entonces no esta conectado y no se puede copiar ningun archivo. Si requieres un ejemplo completo mandame un email y con gusto te lo envio. |
Respuesta: | BETY GS |
Hola, no se si ya lo hayas resuelto, pero en la ruta destino estas mal.
Me imagino que b001_santana es la computadora a donde te tienes que conectar... al conectarte a esta computadora como ya te lo dijeron solo veras las carpetas que tengas compartidas. El archivo que quieres copiar solo podrás hacerlo a alguna de esas carpetas y no hay necesidad de indicar la ruta de esas carpetas. Por ejemplo: En tu compu dale en RUN \b001_santana las carpetas que veas son a las que tienes acceso suponiendo que ves una carpeta que se llama DIBUJOS en tu codigo solo pondrás "\b001_santanaDIBUJOSdibujo1.bmp" aunque en la computadora b001_santana la carpeta imagenes esté en C:MIS IMAGENESDIBUJOS |
Respuesta: | Carla Flores |
Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Dim T as Long T = CopyFile(origen, destino, True) True, es para sobrescribir el archivo si ya este existe Así es como se utiliza la función API para copiar archivos. Funciona bien en red, con el archivo a copiar abierto o cerrado, esta es su ventaja no tiene muchas restricciones. |
Respuesta: | Jose Ignacio Gonzalez Lorente |
Estas intentando copiar un fichero desde una maquina local a otra maquina. Primero verifica que te puedes conectar a esa maquina desde Ms_dos: c:\net use Z: \\ "\\b001_santana\C:\otras_imagenes Si no te conectas el codigo no se podra ejecutar. Me parece que no lo haces bien. En la maquina remota tiene que existir un recurso compartido donde te puedas conectar, es decir, definir el directorio otras_imagenes como recurso compartido con un nombre x. Luego intenta hacer lo mismo: c:\net use Z: \\ "\\b001_santana\x si te conectas, haz lo mismo en el codigo. |