Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unzip folder with files to the chosen location

Tags:

excel

vba

Team, I am working upon extract the zip file from VBA code but getting error, here is my code:

Sub Un_Zip_File()
Dim flname As String
Call PathCall
flname = Dir(impathn & "Transactions*.zip")
Call PathCall
Call UnZip_File(impathn, flname)
End Sub

Sub UnZip_File(strTargetPath As String, fname As Variant)
Dim oApp As Object, FSOobj As Object
Dim FileNameFolder As Variant

If Right(strTargetPath, 1) <> Application.PathSeparator Then
strTargetPath = strTargetPath & Application.PathSeparator
End If

FileNameFolder = strTargetPath

'destination folder if it does not exist
Set FSOobj = CreateObject("Scripting.FilesystemObject")
If FSOobj.FolderExists(FileNameFolder) = False Then
FSOobj.CreateFolder FileNameFolder
End If

Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(fname).Items

Set oApp = Nothing
Set FSOobj = Nothing
Set FileNameFolder = Nothing

End Sub

When I am running Un_zip_file macro, I am getting error:

Object variables or with block variable not set

after debug moving on

oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(fname).Items
like image 419
Dharmendra Avatar asked Mar 01 '16 07:03

Dharmendra


People also ask

How do I extract files from a compressed folder to the default location?

Open File Explorer and find the zipped folder. To unzip the entire folder, right-click to select Extract All, and then follow the instructions. To unzip a single file or folder, double-click the zipped folder to open it. Then, drag or copy the item from the zipped folder to a new location.

How do I change the default location for Extract?

Right-click a zipped folder and from the context menu, select 7-Zip. Select 'Extract files…' from the sub-menu. You will see a window with an 'Extract to' field. Click the browse/select path button next to the field and choose where you want to extract the file to.

How do I find the location of a ZIP file?

If you downloaded the ZIP file from the internet or as an email attachment, you might find it in the Downloads folder in your System Drive. Right-click on the ZIP file and select “Extract All…” Once you select “Extract All,” you will get a new pop-up menu. In the pop-up menu, select a location to extract the files.


3 Answers

Here is another example how to unzip a file.
the macro unzip the zip file in a fixed folder"C:\test\"

Sub Unzip()
    Dim FSO As Object
    Dim oApp As Object
    Dim Fname As Variant
    Dim FileNameFolder As Variant
    Dim DefPath As String

    Fname = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", _
                                        MultiSelect:=False)
    If Fname = False Then
        'Do nothing
    Else
        'Destination folder
        DefPath = "C:\test\"    ' Change to your path / variable
        If Right(DefPath, 1) <> "\" Then
            DefPath = DefPath & "\"
        End If

        FileNameFolder = DefPath

        '        'Delete all the files in the folder DefPath first if you want
        '        On Error Resume Next
        '        Kill DefPath & "*.*"
        '        On Error GoTo 0

        'Extract the files into the Destination folder
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname).items

        MsgBox "You find the files here: " & FileNameFolder

        On Error Resume Next
        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
    End If
End Sub
like image 144
XsiSec Avatar answered Sep 23 '22 05:09

XsiSec


Found elsewhere on the web and thought it might help here...

Sub UnzipAFile(zippedFileFullName As Variant, unzipToPath As Variant)

Dim ShellApp As Object

'Copy the files & folders from the zip into a folder
Set ShellApp = CreateObject("Shell.Application")
On Error Resume Next
ShellApp.Namespace(unzipToPath).CopyHere ShellApp.Namespace(zippedFileFullName).Items
On Error GoTo 0
End Sub
like image 40
Stickman68 Avatar answered Sep 20 '22 05:09

Stickman68


I had same error "Object variables or with block variable not set".

Solved it by adding reference to "Microsoft Shell Controls & Automation" - Shell32.dll. Then define & use the Shell object in this order.

Do not skip any of these steps. I have also posted full code in this page.

Dim wShApp As Shell

Set wShApp = CreateObject("Shell.Application")
Set objZipItems = wShApp.Namespace(zipFileName).items  

wShApp.Namespace(unZipFolderName).CopyHere objZipItems
like image 44
OfficeTricks.Com Avatar answered Sep 21 '22 05:09

OfficeTricks.Com