............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Crea, copia, mueve y elimina carpetas con API's de Windows

Ver el tema anterior Ver el tema siguiente Ir abajo

Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por P@li el Lun Mar 17, 2008 8:30 pm

Con las API's de Windows se puede hacer lo que uno quiera, este es un pequeñísimo ejemplo.


DESCARGAR ARCHIVO

PARA LOS QUE NO PUEDAN BAJAR EL ARCHIVO (YO ACABO DE DESCARGARLOS SIN PROBLEMAS, aca va el còdigo

En el Modulo Thisworkbook
Código:
Private Sub Workbook_Open()
    Prueba.Show
End Sub

Insertar un Userform llamado "Prueba" con el siguiente còdigo

Código:
Private Sub UserForm_Initialize()
    'para probar todas las opciones del módulo
    'recorrer con F8 para mayor entendimiento
    'debo los comentarios
    Stop
    FolderAPI.Crear_Carpeta "c:\hola"
    FolderAPI.Copiar_Carpeta "c:\hola", "c:\chau"
    FolderAPI.Mover_Carpeta "c:\hola", "c:\hola2"
    FolderAPI.Borrar_Carpeta "c:\hola2"
    FolderAPI.Borrar_Carpeta "c:\chau"
End Sub

Crear Un mòdulo estandar y "bautizarlo" FolderAPI, agregar al mismo el siguiente còdigo extraido de "elguille"

Código:
'----------------------------------------------------------------------
' Ejemplo de copiar y mover ficheros usando el API de Windows 11/5/99
'
' ©Guillermo 'guille' Som, 1999
'-----------------------------------------------------------------------
Option Explicit

' Constantes para el orden de los chkOpciones
Private Enum eOpciones
    cFOF_ALLOWUNDO
    cFOF_FILESONLY
    cFOF_MULTIDESTFILES
    cFOF_NOCONFIRMATION
    cFOF_NOCONFIRMMKDIR
    cFOF_RENAMEONCOLLISION
    cFOF_SILENT
    cFOF_SIMPLEPROGRESS
End Enum


' Variables, constantes y declaraciones para el API
Private Type SHFILEOPSTRUCT
    hWnd As Long                        ' hWnd del formulario
    wFunc As Long                      ' Función a usar: FO_COPY, etc.
    pFrom As String                    ' Fichero(s) de origen
    pTo As String                      ' Fichero(s) de destino
    fFlags As Integer                  ' Opciones
    fAnyOperationsAborted As Boolean    ' Si se ha cancelado
    hNameMappings As Long              '
    lpszProgressTitle As String        ' Sólo si se usa FOF_SIMPLEPROGRESS
End Type

' Constantes para FileOperation
Private Enum eFO
    FO_COPY = &H2                      ' Copiar
    FO_DELETE = &H3                    ' Borrar
    FO_MOVE = &H1                      ' Mover
    FO_RENAME = &H4                    ' Renombrar
    '
    FOF_MULTIDESTFILES = &H1            ' Multiples archivos de destino
    FOF_CONFIRMMOUSE = &H2              ' No está implementada
    FOF_SILENT = &H4                    ' No mostrar el progreso
    FOF_RENAMEONCOLLISION = &H8        ' Cambiar el nombre si el archivo de destino ya existe
    FOF_NOCONFIRMATION = &H10          ' No pedir confirmación
    FOF_WANTMAPPINGHANDLE = &H20        '// Fill in SHFILEOPSTRUCT.hNameMappings
                                        '// Must be freed using SHFreeNameMappings
    FOF_ALLOWUNDO = &H40                ' Permitir deshacer
    FOF_FILESONLY = &H80                ' Si se especifica *.*, hacerlo sólo con archivos
    FOF_SIMPLEPROGRESS = &H100          ' No mostrar los nombres de los archivos
    FOF_NOCONFIRMMKDIR = &H200          ' No confirmar la creación de directorios
    FOF_NOERRORUI = &H400              '// don't put up error UI
    FOF_NOCOPYSECURITYATTRIBS = &H800  '// don't copy NT file Security Attributes
End Enum
Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
End Type

Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

Public Sub Copiar_Carpeta(ByVal path_orig As String, ByVal path_dest As String)
    ' Copiar
    Dim SHFileOp As SHFILEOPSTRUCT

    SHFileOp.wFunc = FO_COPY
    SHFileOp.fFlags = eOpciones.cFOF_SILENT
    SHFileOp.hWnd = Application.hWnd
    SHFileOp.pFrom = path_orig & vbNullChar & vbNullChar
    SHFileOp.pTo = path_dest & vbNullChar & vbNullChar
    'SHFileOp.lpszProgressTitle = "Copiando los ficheros especificados"

    SHFileOperation SHFileOp
End Sub

Public Sub Mover_Carpeta(ByVal path_orig As String, ByVal path_dest As String)
    ' Mover
    Dim SHFileOp As SHFILEOPSTRUCT

    SHFileOp.wFunc = FO_MOVE
    SHFileOp.fFlags = eOpciones.cFOF_SILENT
    SHFileOp.hWnd = Application.hWnd
    SHFileOp.pFrom = path_orig & vbNullChar & vbNullChar
    SHFileOp.pTo = path_dest & vbNullChar & vbNullChar
    'SHFileOp.lpszProgressTitle = "Moviendo los ficheros especificados"
   
    SHFileOperation SHFileOp
End Sub

Public Function Crear_Carpeta(ByVal path As String) As Boolean
    Dim SA As SECURITY_ATTRIBUTES
    Crear_Carpeta = IIf(CreateDirectory(path, SA) = 0, False, True)
End Function

Public Function Borrar_Carpeta(ByVal path As String) As Boolean
    Borrar_Carpeta = IIf(RemoveDirectory(path) = 0, False, True)
End Function

Saludos.


PD: Gali, ¿qué te parece crear un subforo dedicado al mundo de las API's de Windows?

-----------------------------
Pablo Gabriel González
Buenos Aires, Argentina
-----------------------------


Última edición por GalileoGali el Sáb Jun 30, 2012 7:08 am, editado 4 veces (Razón : Corregí el link)

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por GalileoGali el Mar Mar 18, 2008 10:46 pm

Excelente Idea!!! p@li, un lugar donde el intercambio de conocimientos sobre estos recursos tan "extremos" (hmmmm ¿qué habré querido decir???, nos enriqueza a todos.....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por P@li el Mar Mar 18, 2008 11:15 pm

Gracias Gali!!!!!!!!!!,
Moví este tema al foro correspondiente.
En cuanto tenga un rato libre voy a ir aportando ejemplos varios, y copiando los que ya tenía guardados por ahí.
Espero que también se llene de consultas, porque de ellas se aprende muchísimo.

Saludos.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por sebastiani el Vie Jun 29, 2012 12:44 pm

porfavor no cuelguen sus archivos en Esnip ya que no se puede descargar ... quiero este archivo puedes colgarlo en otro servidor. Gracias

sebastiani

Cantidad de envíos : 3
Fecha de inscripción : 04/10/2008

Volver arriba Ir abajo

Re: Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por GalileoGali el Sáb Jun 30, 2012 4:39 pm

Si ves mas arriba pegue el codigo

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Crea, copia, mueve y elimina carpetas con API's de Windows

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.