Ciao Wlly, innanzitutto grazie per i link.
Tra tutti i siti in cui avevo cercato, questi non li avevo visti.
Li ho letti, cercando un po' di capire.
Ho fatto una prova con il codice proposto dal secondo link, ma ad un certo punto si blocca riportando l'errore di automazione.
Posto il codice completo precisando che il file zip in questione è diverso ogni volta e pertanto gli passo il nome cercando tra i file .gz presenti nella cartella downloads:
Sub BDN() '(myvalue As String)
'ho evitato di inserirvi l'intero codice di accesso al sito e navigazione
'Call ChiudiIstanze("chrome.exe")
Dim IE As ChromeDriver
------------
IE.FindElementById("ZIP").Click
IE.SwitchToNextWindow
Dim a As String
Dim file
Dim fileExt
Dim folder As String
Dim zip_file As String
Dim fsob As Scripting.FileSystemObject
Dim f As Scripting.folder
folder = "C:\Users\marco.cremaschini\Documenti\Downloads"
Set fsob = New Scripting.FileSystemObject
fileExt = "*.gz"
If Right(folder, 1) <> "\" Then
folder = folder & "\"
End If
file = Dir(folder & fileExt)
Debug.Print file
Set f = fsob.GetFolder(folder)
Debug.Print f
Debug.Print fsob.BuildPath(f, file)
zip_file = fsob.BuildPath(f, file)
Call UnZip(zip_file, "C:\", False)
IE.Window.Close
IE.SwitchToWindowByTitle ("BDN")
IE.FindElementByName("Indietro").Click
i = i + 1
Next
Call LoopCartelle
Call uniscifiles
End Sub
Public Function UnZip( _
ByVal Path As String, _
Optional ByRef Destination As String, _
Optional ByVal Overwrite As Boolean) _
As Long
' Microsoft Scripting Runtime.
Dim FileSystemObject As Scripting.FileSystemObject
' Microsoft Shell Controls And Automation.
Dim ShellApplication As Shell
Set FileSystemObject = New Scripting.FileSystemObject
Set ShellApplication = New Shell
' Extension of a cabinet file holding one or more files.
Const CabExtensionName As String = "cab"
' Mandatory extension of zip file.
Const ZipExtensionName As String = "gz"
Const ZipExtension As String = "." & ZipExtensionName
' Constants for Shell.Application.
Const OverWriteAll As Long = &H10&
' Custom error values.
Const ErrorNone As Long = 0
Const ErrorOther As Long = -1
Dim ZipName As String
Dim ZipPath As String
Dim ZipTemp As String
Dim Result As Long
If FileSystemObject.FileExists(Path) Then
' The source is an existing file.
ZipName = FileSystemObject.GetBaseName(Path)
ZipPath = FileSystemObject.GetFile(Path).ParentFolder
End If
If ZipName = "" Then
' Nothing to unzip. Exit.
Destination = ""
Else
' Select or create destination folder.
If Destination <> "" Then
' Unzip to a custom folder.
If _
FileSystemObject.GetExtensionName(Destination) = CabExtensionName Or _
FileSystemObject.GetExtensionName(Destination) = ZipExtensionName Then
' Do not unzip to a folder named *.cab or *.zip.
' Strip extension.
Destination = FileSystemObject.BuildPath( _
FileSystemObject.GetParentFolderName(Destination), _
FileSystemObject.GetBaseName(Destination))
End If
Else
' Unzip to a subfolder of the folder of the zipfile.
Destination = FileSystemObject.BuildPath(ZipPath, ZipName)
End If
If FileSystemObject.FolderExists(Destination) And Overwrite = True Then
' Delete the existing folder.
FileSystemObject.DeleteFolder Destination, True
End If
If Not FileSystemObject.FolderExists(Destination) Then
' Create the destination folder.
FileSystemObject.CreateFolder Destination
End If
If Not FileSystemObject.FolderExists(Destination) Then
' For some reason the destination folder does not exist and cannot be created.
' Exit.
Destination = ""
Else
' Destination folder existed or has been created successfully.
' Resolve relative paths.
Destination = FileSystemObject.GetAbsolutePathName(Destination)
Path = FileSystemObject.GetAbsolutePathName(Path)
' Check file extension.
If FileSystemObject.GetExtensionName(Path) = ZipExtensionName Then
' File extension is OK.
ZipTemp = Path
Else
' Rename the zip file by adding a zip extension.
ZipTemp = Path & ZipExtension
FileSystemObject.MoveFile Path, ZipTemp
End If
' Unzip files and folders from the zip file to the destination folder.
ShellApplication.Namespace(Cvar(Destination)).CopyHere ShellApplication.Namespace(Cvar(ZipTemp)).Items, overwriteall <-- qui da errore
If ZipTemp <> Path Then
' Remove the zip extension to restore the original file name.
FileSystemObject.MoveFile ZipTemp, Path
End If
End If
End If
Set ShellApplication = Nothing
Set FileSystemObject = Nothing
If Err.Number <> ErrorNone Then
Destination = ""
Result = Err.Number
ElseIf Destination = "" Then
Result = ErrorOther
End If
UnZip = Result
End Function
Il file zippato come spiegato è un .gz
Come programma di compressione/decompressione ho 7ZIP
Avevo provato anche a scrivere un file batch, ma non ho nessuna conoscenza in quel campo.
Il Sistema Operativo è a 64 bit
L'esigenza è quella di automatizzare un processo di generazione delle pratiche andando a scaricare dei documenti da un sito (nel caso servano) per poterli allegare alla pratica in generazione in quel momento.
Purtroppo il sito ha previsto che il pdf in queste situazioni si apra con pdfviewer di chrome senza scaricarlo invece automaticamente come fa con ogni altro download (ad esempio quello del file compresso ... valli a capire)
Pertanto io ricavo il file zip che è presente nella cartella e lo vorrei far unzippare
Alle volte, bisogna allegare più di un documento e pertanto bisogna unire i file (infatti in seguito richiamo un'altra routine che mi unisce i file tramite un programma di unione pdf)
Scusate il papiro e spero di essere stato chiaro
Buona giornata a tutti