Visual Basic para Aplicaciones - Sobreescribir archivo adjunto sobre la misma ruta

Life is soft - evento anual de software empresarial
 
Vista:

Sobreescribir archivo adjunto sobre la misma ruta

Publicado por EB (2 intervenciones) el 17/12/2018 17:19:51
Buenas tardes.

Tengo una regla que ejecuta un script que descomprime el archivo adjunto que viene y lo guarda en la ruta indicada.

El archivo viene en formato ZIP y lo guarda en excel

Necesitaría que el archivo se guardara siempre en la misma ruta con el mismo nombre, renombrando el archivo original.

¿Me podríais ayudar?

Gracias de antemano.
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Sobreescribir archivo adjunto sobre la misma ruta

Publicado por Antoni Masana (498 intervenciones) el 18/12/2018 06:42:13
Deberias subir el script, para saber que tienes, como lo haces y que modificación deberías hacer.

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

Sobreescribir archivo adjunto sobre la misma ruta

Publicado por EB (2 intervenciones) el 18/12/2018 09:11:18
Llevas toda la razon.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Sub unZipAttachments(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim objALTERNATE As Outlook.Attachment
Dim objFSO As Object
Dim objFSAlternte As Object
 
 
Dim i: i = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
 
saveFolder = "Ruta"
 
 
For Each objAtt In itm.Attachments
   If ((InStr(UCase(objAtt.DisplayName), ".ZIP"))) Then
 
          FullFileName = saveFolder & objAtt.DisplayName
          objAtt.SaveAsFile (FullFileName)
          Set filesInzip = objShell.NameSpace(FullFileName).Items
          objShell.NameSpace(saveFolder).CopyHere filesInzip
          objFSO.DeleteFile (FullFileName)
          Set objAtt = Nothing
 
    End If
Next
 
 
End Sub
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
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Sobreescribir archivo adjunto sobre la misma ruta

Publicado por Antoni Masana (498 intervenciones) el 18/12/2018 10:15:02
Esta es la macro que ejecutas que no sé muy bien que hace:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Public Sub unZipAttachments(itm As Outlook.MailItem)
    Dim objFSO As Object
    Dim objAtt As Outlook.Attachment
 
    Dim objALTERNATE As Outlook.Attachment
    Dim objFSAlternte As Object
 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
 
    saveFolder = "Ruta"
 
    For Each objAtt In itm.Attachments
        If ((InStr(UCase(objAtt.DisplayName), ".ZIP"))) Then        ‘ Verifica si es ZIP
            FullFileName = saveFolder & objAtt.DisplayName          ‘ Consigue el nombre ZIP
            objAtt.SaveAsFile (FullFileName)                        ‘ guarda el ZIP en disco
            Set filesInzip = objShell.NameSpace(FullFileName).Items ‘ Extraer nombre interno
 
   ‘ Aquí debería verificar si existe el destino
 
            objShell.NameSpace(saveFolder).CopyHere filesInzip      ‘ Extraer fichero.
            objFSO.DeleteFile (FullFileName)                        ‘ Borrar fichero Zip
            Set objAtt = Nothing
        End If
    Next
End Sub

Entiendo viendo en código extrae los ficheros adjuntos de correo lo guarda en el disco y lo descomprime:

Donde está el comentario se podría poner este código:

1
2
3
If dir(saveFolder & FullFileName) <> "" Then
    FileCopy saveFolder & FullFileName , saveFolder & "Old_" & FullFileName
End If

Si leo tu comentario hay cosas que no entiendo:

Tengo una regla que ejecuta un script (¿Dónde esta el script?) que descomprime el archivo adjunto (¿Adjunto a quién? ¿Al Excel?) que viene y lo guarda en la ruta indicada.

El archivo viene en formato ZIP y lo guarda en Excel (¿Sera en el disco? ¿O dentro del Excel? ¿Y la ruta?)

Necesitaría que el archivo se guardara siempre en la misma ruta con el mismo nombre, renombrando el archivo original. (¿El archivo original es el libro Excel que está ejecutando la macro?)

Cuantas versiones del mismo fichero hay que guardar. Solo la última, las 5 últimas, etc.

Si la propuesta no te sirve hara falta más datos de lo que haces.

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