Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            Access: formato condicional
            21/12/2022
            vba: más sobre la descarga de archivos
            28/12/2022
            Mostrar todos

            vba: ftp con Access

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • FtpGetFile
            • FtpPutFile
            • InternetConnect
            • InternetOpen
            Option Compare Database
            Option Explicit
            
            Public Declare PtrSafe Function FtpGetFileA Lib "wininet.dll" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
            Public Declare PtrSafe Function FtpPutFileA Lib "wininet.dll" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
            Public Declare PtrSafe Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Long
            Public Declare PtrSafe 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
            Public Declare PtrSafe Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
            
            Public Const FTP_TRANSFER_TYPE_UNKNOWN As Long = 0
            Public Const INTERNET_FLAG_RELOAD As Long = &H80000000
            
            
            Public Function FtpUpload(ByVal strLocalFile As String, ByVal strRemoteFile As String, ByVal strHost As String, ByVal lngPort As Long, ByVal strUser As String, ByVal strPass As String) As Boolean
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-ftp-con-access
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : FtpUpload
            ' Autor original    : desconocido
            ' Adaptado por      : Luis Viadel | https://cowtechnologies.net
            ' Fecha             : desconocida
            ' Propósito         : subir un fichero a un servidor mediate el protocolo ftp
            ' Retorno           : verdadero/falso según haya tenido éxito o no la transferencia
            ' Argumento/s       : la sintaxis del procedimiento o función consta del siguiente argumento:
            '                     Parte             Modo           Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     strLocalFile      Obligatorio    Ruta completa del fichero que queremos subir al servidor
            '                     strRemoteFile     Obligatorio    Nombre del fichero de destino
            '                     strHost           Obligatorio    URL del servidor
            '                     lngPort           Obligatorio    Puerto de comunicaciones utilizado (generalmente el 21)
            '                     strUser           Obligatorio    Usuario de acceso al servidor
            '                     strPass           Obligatorio    Contraseña de acceso al servidor
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencias       : https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetconnecta
            '                     https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetopena
            '                     https://https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetclosehandle
            '                     https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-ftpgetfilea
            '                     https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-ftpputfilea
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                     portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese, rellena los datos de tu servidor
            '                     y pulsa F5 para ver su funcionamiento.
            '
            'Sub FtpUpload_test()
            '
            '   Call FtpUpload(ruta de origen, nombreFichero en destino, "URL servidor", "puerto", "usuarioftp", "pass")
            '
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim hOpen As Long
            Dim hConn As Long
            
                hOpen = InternetOpen("FTPGET", 1, vbNullString, vbNullString, 1)
                hConn = InternetConnect(hOpen, strHost, lngPort, strUser, strPass, 1, 0, 2)
                
                If FtpPutFileA(hConn, strLocalFile, strRemoteFile, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
                    FtpUpload = True
                Else
                    FtpUpload = False
                End If
                
            'Close connections
                InternetCloseHandle hConn
                InternetCloseHandle hOpen
            
            End Function
            
            Public Function FtpDownload(ByVal strRemoteFile As String, ByVal strLocalFile As String, ByVal strHost As String, ByVal lngPort As Long, ByVal strUser As String, ByVal strPass As String) As Boolean
            Dim hOpen   As Long
            Dim hConn   As Long
            
                hOpen = InternetOpen("FTPGET", 1, vbNullString, vbNullString, 1)
                hConn = InternetConnect(hOpen, strHost, lngPort, strUser, strPass, 1, 0, 2)
                
                If FtpGetFileA(hConn, strRemoteFile, strLocalFile, 1, 0, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
                    FtpDownload = True
                Else
                    FtpDownload = False
                End If
            
            'Close connections
                InternetCloseHandle hConn
                InternetCloseHandle hOpen
                
            End Function
            
            ¡Ver en el repositorio!
            Compartir
            52
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            07/02/2023

            VBIDE series (Módulos): agregar módulo


            Leer más
            06/02/2023

            VBIDE series (Módulos): Listar módulos


            Leer más
            03/02/2023

            vba: reiniciar MS Access


            Leer más

            2 Comments

            1. Rafael .:McPegasus:. dice:
              31/12/2022 a las 9:05 am

              Justo lo que necesitaba, muchas gracias Luis y equipo de Access-Global sois unos y una gran crack.
              Lo que más me ha gustado ha sido que es el mismo formato de explicación del procedimiento que uso yo :D.

              Responder
              • Luis Viadel dice:
                31/12/2022 a las 9:10 am

                Está bien Rafa, pero tu también formas parte del equipo, sino ¿porqué usamos el mismo formato de explicación del procedimiento?
                Gracias por tu comentario.

                Responder

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Close Colores Comandos ComboBox Consultas Coordenadas Date Diseño DoCmd Excel Fecha FileExists FileSystemObject Filtros For Each...Next Formulario Formularios Funciones GetFolder Google maps images Informes Jose Bengoechea Kill Left Listbox Matrices Menú contextual Node ODBC References Ribbon Right RunCommand Split Tablas Timer TreeView Undo VBA VBIDE With...End With

            ÚLTIMAS ENTRADAS

            • 0
              VBIDE series (Módulos): agregar módulo
              07/02/2023
            • 0
              VBIDE series (Módulos): Listar módulos
              06/02/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados