मैं एक नव निर्मित .zip
फ़ाइल में किसी फ़ोल्डर में सभी फ़ाइलें ज़िप करने के लिए इस कोड का उपयोग कर रहा: के रूप में मेरे समस्याओं के बिनाज़िप छोड़कर फ़ोल्डर में सभी फ़ाइलें ज़िप खुद को संग्रहीत
Dim FileNameZip, FolderName
Dim filename As String, DefPath As String
Dim oApp As Object
(defining all paths needed)
'Create empty Zip File
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(FolderName).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
यह काम करता है रूप में लंबे समय लक्ष्य फ़ोल्डर उस फ़ोल्डर से अलग है जहां मेरी फ़ाइलें हैं।
लेकिन मैं एक समस्या है जब मैं एक फ़ोल्डर से सभी फाइलों को लेने के लिए, उन्हें .zip
में डाल दिया और संग्रह एक ही फ़ोल्डर में उत्पन्न किया है की कोशिश - यह संग्रह बनाता है और फिर यह डाल करने के लिए कोशिश करता है अपने आप में, जो निश्चित रूप से विफल रहता है।
मैं इस नए नव निर्मित किए गए फ़ोल्डर से सभी फ़ाइलों को ज़िप करने का एक तरीका ढूंढ रहा हूं।
मैंने यहां देखा: https://msdn.microsoft.com/en-us/library/office/ff869597.aspx लेकिन यह बहुत आउटलुक-विशिष्ट दिखता है और मुझे नहीं पता कि यह विंडोज फ़ोल्डर में कैसे लागू करें।
शायद आप नई ज़िप फ़ाइल बनाने से पहले आइटम स्टोर करते हैं? – PatricK
वीबीए आधारित कुछ महान उत्तर हैं लेकिन जागरूक रहें कि वीबीए को चलाने में काफी समय लगेगा क्योंकि सभी फाइल ओप करते हैं, खासकर संग्रहित करते हैं। आप कमांड लाइन पर शेलिंग पर विचार करना चाहेंगे और बैच फ़ाइल होने पर यह http://stackoverflow.com/questions/17546016/how-can-you-zip-or-unzip-from-the-command-prompt- केवल-विंडोज़-निर्मित-इन-सीए का उपयोग करते हुए वीबीए पर्यावरण उत्तरदायी रहेगा, जबकि यह पूरा हो जाएगा। –