एक्सेल VBA प्रोजेक्ट पर पासवर्ड क्रैक करने का कोई तरीका है?


485

मुझे कुछ एक्सेल 2003 मैक्रोज़ को अपडेट करने के लिए कहा गया है, लेकिन VBA प्रोजेक्ट्स पासवर्ड प्रोटेक्टेड हैं, और ऐसा लगता है कि डॉक्यूमेंटेशन की कमी है ... कोई भी पासवर्ड नहीं जानता है।

क्या VBA प्रोजेक्ट पर पासवर्ड को हटाने या क्रैक करने का एक तरीका है?


क्या आप अपने लिंक सुझाव में उदाहरण के रूप में .xla के बजाय .xls के रूप में सहेजें-सक्षम हैं? यकीन नहीं होता कि इससे फर्क पड़ेगा।
बी हार्ट

4
अच्छे से जाना जाता है: xlsb पासवर्ड क्रैकिंग ट्रिक्स के खिलाफ मजबूत है
Qbik

20
@ Fandango68 इस सवाल पर वर्षों पहले मेटा पर चर्चा की गई थी । TLDR: SO पर प्रश्नों के बहुत (सबसे अधिक) बुरे अभिनेताओं द्वारा दुर्व्यवहार किया जा सकता है, लेकिन जब तक कि गलत काम के स्पष्ट सबूत नहीं हैं, हम अच्छा विश्वास मानते हैं। VBA पासवर्ड क्रैक करने के लिए कानूनी रूप से बहुत सारे कानूनी और नैतिक कारण हैं। इसके अतिरिक्त, वर्तमान प्रणालियों की कमजोरियों पर चर्चा करना अंततः भविष्य में बेहतर सुरक्षा में योगदान देता है और लोगों को अब असुरक्षित रूप से असुरक्षित प्रणालियों पर भरोसा करने से रोकता है।
जंबो पियानो

जवाबों:


699

आप इस प्रत्यक्ष VBAदृष्टिकोण को आज़मा सकते हैं जिसमें HEX संपादन की आवश्यकता नहीं है। यह किसी भी फाइल (* .xls, * .xlsm, * .xlam ...) के लिए काम करेगा।

परीक्षण किया और काम करता है:

एक्सेल 2007
एक्सेल 2010
एक्सेल 2013 - 32 बिट संस्करण
एक्सेल 2016 - 32 बिट संस्करण

64 बिट संस्करण के लिए खोज रहे हैं? इस जवाब को देखें

यह काम किस प्रकार करता है

मैं यह समझाने की पूरी कोशिश करूंगा कि यह कैसे काम करता है - कृपया मेरी अंग्रेजी बहाना करें।

  1. VBE पासवर्ड डायलॉग बॉक्स बनाने के लिए एक सिस्टम फंक्शन को कॉल करेगा।
  2. यदि उपयोगकर्ता सही पासवर्ड दर्ज करता है और ठीक पर क्लिक करता है, तो यह फ़ंक्शन वापस आ जाता है। यदि उपयोगकर्ता गलत पासवर्ड दर्ज करता है या रद्द करें पर क्लिक करता है, तो यह फ़ंक्शन 0 देता है।
  3. संवाद बॉक्स बंद होने के बाद, VBE सिस्टम फ़ंक्शन के दिए गए मान की जाँच करता है
  4. यदि यह मान 1 है, तो VBE को "सोचना" होगा कि पासवर्ड सही है, इसलिए बंद VBA प्रोजेक्ट खोला जाएगा।
  5. नीचे दिए गए कोड में मूल फ़ंक्शन की मेमोरी स्वैप की जाती है, जिसका उपयोग उपयोगकर्ता परिभाषित फ़ंक्शन के साथ पासवर्ड संवाद को प्रदर्शित करने के लिए किया जाता है जो हमेशा कॉल किए जाने पर 1 वापस आ जाएगा।

कोड का उपयोग करना

कृपया पहले अपनी फ़ाइलों का बैकअप लें!

  1. वह फ़ाइल खोलें जिसमें आपके लॉक किए गए VBA प्रोजेक्ट्स हों
  2. एक नई xlsm फ़ाइल बनाएं और इस कोड को Module1 में संग्रहीत करें

    code credited to Siwtom (nick name), a Vietnamese developer

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
            (Destination As Long, Source As Long, ByVal Length As Long)
    
    Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, _
            ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long
    
    Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long
    
    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _
            ByVal lpProcName As String) As Long
    
    Private Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As Long, _
            ByVal pTemplateName As Long, ByVal hWndParent As Long, _
            ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer
    
    Dim HookBytes(0 To 5) As Byte
    Dim OriginBytes(0 To 5) As Byte
    Dim pFunc As Long
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As Long) As Long
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 5) As Byte
        Dim p As Long
        Dim OriginProtect As Long
    
        Hook = False
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
    
        If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6
            If TmpBytes(0) <> &H68 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                HookBytes(0) = &H68
                MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4
                HookBytes(5) = &HC3
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As Long, _
            ByVal pTemplateName As Long, ByVal hWndParent As Long, _
            ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                               hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
  3. इस कोड को Module1 में उपरोक्त कोड के तहत पेस्ट करें और इसे चलाएं

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub
  4. अपने VBA प्रोजेक्ट्स पर वापस आएं और आनंद लें।


4
@ आप बिल्कुल सही हैं। क्योंकि इस कोड में 32 जीतने के लिए विंडोज एपीआई फ़ंक्शन को परिभाषित किया गया है।
25c थान गुयेन

8
कुछ स्पष्टीकरण अच्छा होगा कि यह कैसे काम कर रहा है।
डेनिस जी

20
अब एकमात्र प्रश्न बचा है (इस प्रभावशाली तरीके को पूरी तरह से देखने के बाद), यह है कि मैं अपने वीबीए प्रोजेक्ट को दूसरों को इस पर इस हैक का उपयोग करने से रोकने के लिए अधिक सुरक्षित कैसे बना सकता हूं :)
एरनग

6
यह कोड VBA कोड को अनलॉक करने में पूरी तरह से काम करता है, हालांकि हर बार जब मैंने इसका इस्तेमाल किया है तो यह मुझे प्रोजेक्ट को अलग पासवर्ड से फिर से सुरक्षित रखने से रोकता है, क्या किसी और को यह समस्या हुई है?
मैथ्यू बॉन्ड

2
मैंने पाया कि यह एक्सेल फाइल में VBA प्रोजेक्ट को दूषित करता है, इसलिए मुझे सभी मॉड्यूल / वर्गों को निर्यात करना था, फिर फ़ाइल को xlsx (नॉन-मैक्रो) के रूप में सहेजें, फिर फ़ाइल को (बेवकूफ एक्सेल) को बंद करें, फिर से खोलें आयात मॉड्यूल और वर्ग फ़ाइलों से कॉपी कोड। इस बिंदु पर, मैं VBA प्रोजेक्ट पर अपने स्वयं के पासवर्ड के साथ xlsm के रूप में फ़ाइल सहेज सकता था।
BH

217

हां, जब तक आप एक .xlsप्रारूप स्प्रेडशीट का उपयोग कर रहे हैं (एक्सेल के लिए डिफ़ॉल्ट 2003 तक)। Excel 2007 के बाद, डिफ़ॉल्ट है .xlsx, जो एक काफी सुरक्षित प्रारूप है, और यह विधि काम नहीं करेगी।

जैसा कि ट्रेब कहता है, यह एक साधारण तुलना है। एक विधि बस हेक्स संपादक ( विंडोज के लिए हेक्स संपादकों को देखें ) का उपयोग करके फ़ाइल में पासवर्ड प्रविष्टि को स्वैप करना है । कदम से कदम उदाहरण:

  1. एक नया सरल एक्सेल फ़ाइल बनाएँ।
  2. VBA भाग में, एक साधारण पासवर्ड सेट करें (कहते हैं - 1234)।
  3. फ़ाइल सहेजें और बाहर निकलें। फिर फ़ाइल का आकार जांचें - Stewbob's gotcha देखें
  4. वह फ़ाइल खोलें जिसे आपने एक हेक्स संपादक के साथ बनाया है।
  5. निम्नलिखित कुंजियों से शुरू होने वाली रेखाओं की प्रतिलिपि बनाएँ:

    CMG=....
    DPB=...
    GC=...
  6. सबसे पहले उस एक्सेल फाइल को वापस लें, जिसके लिए आप VBA पासवर्ड नहीं जानते हैं, फिर इसे अपने हेक्स एडिटर के साथ खोलें, और डमी फाइल से उपरोक्त कॉपी की गई लाइनों को पेस्ट करें।

  7. एक्सेल फ़ाइल को सहेजें और बाहर निकलें।
  8. अब, VBA कोड को देखने के लिए आवश्यक एक्सेल फ़ाइल खोलें। VBA कोड के लिए पासवर्ड बस 1234 होगा (उदाहरण के लिए मैं यहाँ दिखा रहा हूँ)।

यदि आपको एक्सेल 2007 या 2010 के साथ काम करने की आवश्यकता है, तो नीचे कुछ अन्य उत्तर दिए गए हैं, जो मदद कर सकते हैं, विशेष रूप से ये: 1 , 2 , 3

EDIT फ़रवरी 2015: बहुत आशाजनक लगने वाली एक और विधि के लिए, इस नए जवाब को hc Thanh Nguy .n द्वारा देखें।


क्या होगा अगर कोई लाइनें नहीं हैं जो CMG = से शुरू होती हैं ...?
13

1
रिक्त एक्सेल फ़ाइल में, या एक बंद? रिक्त फ़ाइल का फ़ाइल आकार जांचें। यदि इसकी लॉक की गई फ़ाइल, सुनिश्चित करें कि आपका बैकअप सुरक्षित है, तो अन्य दो पंक्तियों को बदलने का प्रयास करें। आपको यकीन है कि यह एन्क्रिप्टेड फ़ाइल है?
कॉलिन पिकार्ड

6
Excel 2007 पासवर्ड सुरक्षा (और फ़ाइल स्वरूप) Excel 2003 की तुलना में मौलिक रूप से भिन्न है। मैंने नीचे दिए गए अपने उत्तर में इसके बारे में कुछ बारीकियों को शामिल किया। मेरी राय में, एक्सेल 2007 फ़ाइल पर पासवर्ड संरक्षित विकल्प माइक्रोसॉफ्ट ऑफिस के इतिहास में पहली बार है कि उन्होंने एक यथोचित सुरक्षित फ़ाइल का उत्पादन किया है।
स्टिवबॉब

1
मैं एक एक्सेल 2016 नई फ़ाइल पर vba पासवर्ड सेट करने में सक्षम नहीं था। क्या कोई व्यक्ति बस 1234 के साथ बदलने के लिए HEX को साझा कर सकता है? या यह मशीन से मशीन में बदल सकता है?
मेस्कालिटो

1
इस दृष्टिकोण ने मेरे लिए एक .xlsm फ़ाइल पर काम किया। मैंने इसे एक -xls के रूप में सहेजा, यह किया और फिर इसे वापस .xlsm में बदल दिया। यह ध्यान दिया जाना चाहिए कि आप फ़ाइल की लंबाई को सुरक्षित रूप से बढ़ा सकते हैं यदि नया CMG...स्ट्रिंग मूल से अधिक लंबा है।
ड्रू चापिन

173

मैंने hc Thanh Nguy uponn के शानदार उत्तर पर इस विधि को एक्सेल के 64-बिट संस्करणों के साथ काम करने की अनुमति दी है। मैं 64-बिट विंडोज 7 पर एक्सेल 2010 64-बिट चला रहा हूं।

  1. वह फ़ाइल खोलें जिसमें आपके लॉक किए गए VBA प्रोजेक्ट्स हों।
  2. एक नई xlsm फ़ाइल बनाएं और इस कोड को Module1 में संग्रहीत करें

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As LongPtr, Source As LongPtr, ByVal Length As LongPtr)
    
    Private Declare PtrSafe Function VirtualProtect Lib "kernel32" (lpAddress As LongPtr, _
    ByVal dwSize As LongPtr, ByVal flNewProtect As LongPtr, lpflOldProtect As LongPtr) As LongPtr
    
    Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPtr
    
    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, _
    ByVal lpProcName As String) As LongPtr
    
    Private Declare PtrSafe Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
    Dim HookBytes(0 To 5) As Byte
    Dim OriginBytes(0 To 5) As Byte
    Dim pFunc As LongPtr
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As LongPtr) As LongPtr
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 5) As Byte
        Dim p As LongPtr
        Dim OriginProtect As LongPtr
    
        Hook = False
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
    
        If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6
            If TmpBytes(0) <> &H68 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                HookBytes(0) = &H68
                MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4
                HookBytes(5) = &HC3
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                       hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
  3. इस कोड को Module2 में पेस्ट करें और चलाएं

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub

अस्वीकरण यह मेरे लिए काम किया है और मैंने इसे यहाँ दस्तावेज़ में रखा है इस उम्मीद में कि यह किसी को बाहर करने में मदद करेगा। मैंने इसका पूरी तरह से परीक्षण नहीं किया है । कृपया इस विकल्प के साथ आगे बढ़ने से पहले सभी खुली फाइलों को सहेजना सुनिश्चित करें।


1
मुझे यकीन नहीं है कि क्यों लेकिन जब मैं इसे एक्सेल पर 365 एमएसपी 64-बिट एक्सेल क्रैश के लिए चलाता हूं, तो यह फाइलें बंद कर देता है और जब मैं इसे पुनरारंभ करता हूं, तो पासवर्ड अभी भी है।
इबोबथ

यह अब एक्सेल में नहीं किया जा सकता है क्योंकि संदर्भ मेनू में विकल्प धूसर हो जाते हैं ताकि आप मॉड्यूल नहीं बना सकें।
thanos.a

170

आकार की समस्याओं के बिना एक और (कुछ आसान) समाधान है। मैंने आज इस दृष्टिकोण का उपयोग किया (2003 के XLS फ़ाइल पर, एक्सेल 2007 का उपयोग करके) और सफल रहा।

  1. Xls फ़ाइल का बैकअप लें
  2. फ़ाइल को हेक्स संपादक में खोलें और DPB=...भाग का पता लगाएं
  3. DPB=...स्ट्रिंग को बदलेंDPx=...
  4. एक्सेल में xls फ़ाइल खोलें
  5. VBA संपादक ( ALT+ F11) खोलें
  6. जादू: एक्सेल एक अमान्य कुंजी (DPx) को हटा देता है और पूछता है कि क्या आप परियोजना को लोड करना जारी रखना चाहते हैं (मूल रूप से सुरक्षा की अनदेखी)
  7. आप पासवर्ड को अधिलेखित करने में सक्षम होंगे, इसलिए इसे किसी ऐसी चीज़ में बदलें जिसे आप याद रख सकते हैं
  8. Xls फ़ाइल सहेजें *
  9. बंद करें और दस्तावेज़ को फिर से खोलें और अपने VBA जादू पर काम करें!

* नोट: सुनिश्चित करें कि आपने पासवर्ड को एक नए मान में बदल दिया है, अन्यथा अगली बार जब आप स्प्रेडशीट खोलेंगे एक्सेल त्रुटियों (अनपेक्षित त्रुटि) की रिपोर्ट करेगा, तब जब आप वीबीए मॉड्यूल की सूची तक पहुंचते हैं तो आप अब नामों को देखेंगे। स्रोत मॉड्यूल लेकिन प्रपत्र / कोड / आदि को खोलने का प्रयास करते समय एक और त्रुटि प्राप्त करते हैं। इसे मापने के लिए, VBA प्रोजेक्ट गुण पर वापस जाएं और पासवर्ड को एक नए मान पर सेट करें। एक्सेल दस्तावेज़ को सहेजें और फिर से खोलें और आपको जाना अच्छा होना चाहिए!


3
दुर्भाग्य से, यह मेरे लिए एक्सेल के साथ मैक 2011 v14.2.5 के लिए काम नहीं किया। मुझे फ़ाइल को सुधारने का विकल्प मिला, पासवर्ड रीसेट करने का नहीं, और प्रभाव सभी VBA लिपियों को खो रहा था।
जो कैरोल

सही समाधान - मैंने HxD हेक्स संपादक
क्रिस डब्ल्यू

4
मैंने इसे केवल (.xls, एक्सेल 2007) आज़माया और यह काम नहीं किया। परिणाम है: मॉड्यूल दिखाई दे रहे हैं, कोड वास्तव में काम करने लगता है, लेकिन जब एक मॉड्यूल खोलते हैं, तो यह अप्रत्याशित त्रुटि (40230) कहता है ।
केकूसेमऊ

2
यहाँ (Excel 2010) एक ही त्रुटि - लेकिन तब मुझे एहसास हुआ कि मैंने 'नया पासवर्ड सेट किया है और Pieter से / फिर से खोलें' (चरण 7-9) सहेजें।
ओवेन बी

+1 इस पद्धति ने हमारी खराब विकसित पहुंच (.mdb) फ़ाइल पर भी काम किया! अब हम उस चीज़ को बेहतर बना सकते हैं, इसके लिए धन्यवाद!
एर गेब्रियल डोरोनिला

65

कॉलिन पिकार्ड के पास एक उत्कृष्ट उत्तर है, लेकिन इसके साथ एक 'वॉच आउट' है। ऐसे उदाहरण हैं (मैंने अभी तक कारण का पता नहीं लगाया है) जहां "सीएमजी = ........ जीसी = ...." की कुल लंबाई फ़ाइल में एक एक्सेल फ़ाइल से अलग है आगे। कुछ मामलों में, यह प्रविष्टि 137 बाइट्स होगी, और अन्य में यह 143 बाइट्स होगी। 137 बाइट की लंबाई एक विषम है, और यदि ऐसा होता है जब आप अपनी फाइल को '1234' पासवर्ड के साथ बनाते हैं, तो बस एक और फाइल बनाएं, और यह 143 बाइट की लंबाई तक कूदना चाहिए।

यदि आप फ़ाइल में गलत संख्या बाइट्स को चिपकाने का प्रयास करते हैं, तो जब आप एक्सेल के साथ फ़ाइल खोलने का प्रयास करते हैं तो आप अपना VBA प्रोजेक्ट खो देंगे।

संपादित करें

यह Excel 2007/2010 फ़ाइलों के लिए मान्य नहीं है। मानक .xlsx फ़ाइल प्रारूप वास्तव में एक .zip फ़ाइल है जिसमें स्वरूपण, लेआउट, सामग्री, आदि के साथ कई उप-फ़ोल्डर होते हैं, जिन्हें xml डेटा के रूप में संग्रहीत किया जाता है। असुरक्षित Excel 2007 फ़ाइल के लिए, आप .xlsx एक्सटेंशन को .zip में बदल सकते हैं, फिर ज़िप फ़ाइल खोलें और सभी xml डेटा को देखें। यह बहुत सीधा है।

हालाँकि, जब आप पासवर्ड Excel 2007 फ़ाइल की सुरक्षा करते हैं, तो पूरी .zip (.xlsx) फ़ाइल वास्तव में RSA एन्क्रिप्शन का उपयोग करके एन्क्रिप्ट की जाती है। एक्सटेंशन को .zip में बदलना और फ़ाइल सामग्री को ब्राउज़ करना अब संभव नहीं है।


फिर आपको मानक ज़िप हैकिंग टूल का उपयोग करने की आवश्यकता है। इसकी अब कोई "मैं एक्सेल फाइल कैसे वापस करता हूँ" समस्या है।
बेनामी टाइप

3
@ अज्ञात प्रकार: मुझे लगता है कि जिप क्रैकिंग टूल मदद नहीं करेगा। जैसा कि मैं Stewbob को समझता हूं, यह एन्क्रिप्ट की गई ज़िप फ़ाइल में फ़ाइल प्रविष्टियाँ नहीं है, बल्कि संपूर्ण ज़िप फ़ाइल है, जिसमें हेडर और केंद्रीय निर्देशिका शामिल होनी चाहिए।
ट्रेब

2
बस उत्सुक: जब मैं सिर्फ एक पासवर्ड (सममित) दर्ज करता हूं तो यह आरएसए कैसे हो सकता है?
18 अक्टूबर को kizzx2

जब आप जिस फ़ाइल को प्राप्त करना चाहते हैं, उसके बारे में छोटी कुंजी कैसे है? जब तक आपको 137 नहीं मिल जाते, तब तक बस vba डॉक्स बनाते रहें?
केवल

1
क्या आप सुनिश्चित हैं कि जब आप VBA प्रोजेक्ट को लॉक करते हैं तो संपूर्ण zipfile एन्क्रिप्टेड होता है? मैं अभी भी zipfile खोल सकता हूं और फ़ाइल संरचना देख सकता हूं .... और सबफ़ोल्डर xl \ में फ़ाइल vbaProject.bin है जिसमें परिचित "CMG = ... GC =" हैशिंग ब्लॉक है।
निगेल हेफर्नन

63

एक .xlsmया .dotmफ़ाइल प्रकार के लिए आपको इसे थोड़ा अलग तरीके से करने की आवश्यकता है।

  1. .xlsmफ़ाइल का एक्सटेंशन बदलें .zip
  2. .Zip फ़ाइल (WinZip या WinRar आदि के साथ) खोलें और xl फ़ोल्डर में जाएँ।
  3. vbaProject.binफ़ाइल निकालें और इसे हेक्स एडिटर में खोलें (मैं एचएक्सडी का उपयोग करता हूं , इसकी पूरी तरह से स्वतंत्र और हल्के।)
  4. फ़ाइल के DPBसाथ खोजें और बदलें DPxऔर सहेजें।
  5. vbaProject.binइस नई फ़ाइल के साथ पुरानी फ़ाइल को ज़िपित फ़ाइल में बदलें ।
  6. फ़ाइल एक्सटेंशन को वापस पर बदलें .xlsm
  7. कार्यपुस्तिका खोलें चेतावनी संदेशों के माध्यम से छोड़ें।
  8. एक्सेल के अंदर विजुअल बेसिक खोलें।
  9. उपकरण> VBAProject गुण> सुरक्षा टैब पर जाएं।
  10. एक नया पासवर्ड डालें और .xlsmफाइल को सेव करें ।
  11. बंद करें और फिर से खोलें और आपका नया पासवर्ड काम करेगा।

8
एक्सेल 2016, विंडोज 10 64 बिट में काम किया। (xlsm फाइलें)
LimaNightHawk

3
वर्ड 2016 में काम किया, विंडोज 10 64 बिट (
डॉट

7
महान समाधान, मेरे लिए एक्सेल 2013 में 64 बिट काम किया। .zipयदि आपने 7-ज़िप स्थापित किया है, तो आप फ़ाइल एक्सटेंशन बदलना छोड़ सकते हैं । इस स्थिति में, आप .xlsmफ़ाइल पर राइट-क्लिक कर सकते हैं और "7-ज़िप -> ओपन आर्काइव" चुनें
nkatsar

वर्ड 2013, win7x64 के साथ काम करता है। (यह बहुत दुखद है, इतनी आसानी से विश्वास किया जा रहा है कि कोड कुछ हद तक सुरक्षित है)।
बेरी त्सकाला

1
@ThierryMichel पिछले समाधान और परीक्षण और त्रुटि का संयोजन!
मैट

35

यह इंगित करने योग्य है कि यदि आपके पास Excel 2007 (xlsm) फ़ाइल है, तो आप इसे केवल Excel 2003 (xls) फ़ाइल के रूप में सहेज सकते हैं और अन्य उत्तरों में उल्लिखित विधियों का उपयोग कर सकते हैं।


4
यह सच नहीं है, मैंने उन फाइलों के साथ काम किया है जिनके लिए xlsm से xls / xla में रूपांतरण असंभव था, एक्सेल 2007 और 2010 हर बार दुर्घटनाग्रस्त हो गया, मैंने विभिन्न उदाहरणों की कोशिश की है, एक इरोस संदेश से - कोड wyjątku: c0000 w5j5tzesięcie wyjątku: 005d211d
Qbik

4
हां तुम यह कर सकते हो। मैंने इसे कई बार किया है। यदि चादरों पर कुछ है जो आवश्यक है और जो पुराने संस्करण में स्थानांतरित नहीं किया गया है मैं यह करता हूं: 1.कन्वर्ट .xlsm tox .xls 2.का कोड क्रैक करें 3..xlsm कनवर्ट करें .xlsx .xlsx 4.में मॉड्यूल .xls से कोड डालें। xlsx और उस के रूप में सहेजें .xlsm
ZygD

यह उत्तर में xlsm को xls में बदलने के बाद काम करता है।
पुरुस

31

मेरी बारी के साथ, यह kaybee99 के उत्कृष्ट उत्तर पर बनाया गया है जो Thanc Thanh Nguy answern के शानदार उत्तर पर बनाया गया है ताकि यह विधि Office के x86 और amd64 दोनों संस्करणों के साथ काम कर सके।

जो बदला है उसका एक अवलोकन, हम पुश / रिट से बचते हैं जो 32 बिट पते तक सीमित है और इसे mov / jmp reg से बदल देता है।

परीक्षण किया और पर काम करता है

वर्ड / एक्सेल 2016 - 32 बिट संस्करण
वर्ड / एक्सेल 2016 - 64 बिट संस्करण

यह काम किस प्रकार करता है

  1. वह फ़ाइल खोलें जिसमें आपके लॉक किए गए VBA प्रोजेक्ट्स हों।
  2. ऊपर के समान प्रकार के साथ एक नई फ़ाइल बनाएं और इस कोड को मॉड्यूल 1 में संग्रहीत करें

    Option Explicit
    
    Private Const PAGE_EXECUTE_READWRITE = &H40
    
    Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As LongPtr, Source As LongPtr, ByVal Length As LongPtr)
    
    Private Declare PtrSafe Function VirtualProtect Lib "kernel32" (lpAddress As LongPtr, _
    ByVal dwSize As LongPtr, ByVal flNewProtect As LongPtr, lpflOldProtect As LongPtr) As LongPtr
    
    Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPtr
    
    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, _
    ByVal lpProcName As String) As LongPtr
    
    Private Declare PtrSafe Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
    Dim HookBytes(0 To 11) As Byte
    Dim OriginBytes(0 To 11) As Byte
    Dim pFunc As LongPtr
    Dim Flag As Boolean
    
    Private Function GetPtr(ByVal Value As LongPtr) As LongPtr
        GetPtr = Value
    End Function
    
    Public Sub RecoverBytes()
        If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 12
    End Sub
    
    Public Function Hook() As Boolean
        Dim TmpBytes(0 To 11) As Byte
        Dim p As LongPtr, osi As Byte
        Dim OriginProtect As LongPtr
    
        Hook = False
    
        #If Win64 Then
            osi = 1
        #Else
            osi = 0
        #End If
    
        pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA")
    
        If VirtualProtect(ByVal pFunc, 12, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then
    
            MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, osi+1
            If TmpBytes(osi) <> &HB8 Then
    
                MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 12
    
                p = GetPtr(AddressOf MyDialogBoxParam)
    
                If osi Then HookBytes(0) = &H48
                HookBytes(osi) = &HB8
                osi = osi + 1
                MoveMemory ByVal VarPtr(HookBytes(osi)), ByVal VarPtr(p), 4 * osi
                HookBytes(osi + 4 * osi) = &HFF
                HookBytes(osi + 4 * osi + 1) = &HE0
    
                MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 12
                Flag = True
                Hook = True
            End If
        End If
    End Function
    
    Private Function MyDialogBoxParam(ByVal hInstance As LongPtr, _
    ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _
    ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer
    
        If pTemplateName = 4070 Then
            MyDialogBoxParam = 1
        Else
            RecoverBytes
            MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _
                       hWndParent, lpDialogFunc, dwInitParam)
            Hook
        End If
    End Function
  3. इस कोड को Module2 में पेस्ट करें और चलाएं

    Sub unprotected()
        If Hook Then
            MsgBox "VBA Project is unprotected!", vbInformation, "*****"
        End If
    End Sub

3
उत्तम! विंडोज सर्वर 2016, एक्सेल 2016 32 बिट के साथ काम करें
झिन मिन

यह एक्सेल ऑफिस 365 पर एक .xlsm फ़ाइल पर काम किया। धन्यवाद!
रयान जेम्स

अभी भी 2019 में काम करता है, ऑफिस 365 64 बिट्स का लेट हो जाता है, भयानक लोग!
13

अपडेट किए गए कोड के लिए धन्यवाद, मैं पिछले संस्करण (64-बिट) को चलाने में क्रैश का सामना कर रहा था, लेकिन आपके संस्करण के साथ सभी अच्छे हैं
emjaySX

बहुत बढ़िया ... पूरी तरह से काम किया
Mahhdy

17

क्या आपने उन्हें OpenOffice.org में खोलने की कोशिश की है?

मुझे कुछ समय पहले ऐसी ही समस्या हुई थी और मैंने पाया कि एक्सेल और कैल्क ने एक-दूसरे के एन्क्रिप्शन को नहीं समझा, और इसलिए हर चीज के बारे में सीधे अनुमति दी।

यह कुछ समय पहले की बात है, इसलिए यदि यह मेरी ओर से सिर्फ एक लकीर नहीं थी तो यह भी पैच हो सकती थी।


15

इस घटना में कि आपकी CMG="XXXX"\r\nDPB="XXXXX"\r\nGC="XXXXXX" 'ज्ञात पासवर्ड' फ़ाइल में आपका ब्लॉक 'अज्ञात पासवर्ड' फ़ाइल के मौजूदा ब्लॉक से छोटा है, सही लंबाई तक पहुँचने के लिए पीछे की ओर शून्य से अपने हेक्स स्ट्रिंग्स को पैड करें।

जैसे

CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"

अज्ञात पासवर्ड फ़ाइल में, सेट किया जाना चाहिए

CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000" फ़ाइल की लंबाई को संरक्षित करने के लिए।

मेरे पास 2007 में .XLA (97/2003 प्रारूप) फाइलों के साथ भी यह काम किया है।


1
यह काम करता है, लेकिन जैसा कि मैंने हाल ही में पता लगाया है (ऊपर टिप्पणी की गई है) आप जीसी = "..." ब्लॉक में अंतिम करीबी उद्धरण के बाद बस अशक्त अक्षर जोड़ सकते हैं।
तोबरींद

13

Excel 2007 के लिए आपको अपनी फ़ाइल एक्सटेंशन को .zip में बदलना होगा। संग्रह में एक सबफ़ोल्डर xl है, वहाँ आपको vbaProject.bin मिलेगा। VbaProject.bin के साथ ऊपर दिए गए चरण का पालन करें और फिर इसे संग्रह में वापस सहेजें। वापस अपने विस्तार और voilà संशोधित करें! (उपरोक्त चरणों का अर्थ)


1
मैं एक्सेल 2010 के साथ .xlam फ़ाइलों के लिए भी इस काम की पुष्टि कर सकता हूं। +1!
गिमेलिस्ट

12

VBA प्रोजेक्ट पासवर्ड ऑन एक्सेस, एक्सेल, पावरपॉइंट या वर्ड डॉक्यूमेंट्स ( 2007, 2010, 2013 or 2016एक्सटेंशन वाले संस्करण .ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM) आसानी से निकाले जा सकते हैं

यह फ़ाइल नाम बदलने के लिए .ZIP, फ़ाइल को अनज़िप करने और किसी भी मूल Hex संपादक (जैसे XVI32) का उपयोग करने की बात है करने, और मौजूदा पासवर्ड को "तोड़ने" के लिए ) का उपयोग करने का , जो कि "कन्फ़्यूज़" कार्यालय को "" भ्रमित करता है इसलिए यह अगली बार फ़ाइल के लिए एक नया पासवर्ड देता है। खुल गया।

चरणों का सारांश:

  • फ़ाइल का नाम बदलें इसलिए इसमें a है .ZIP एक्सटेंशन है।
  • खोलो ZIPऔर जाओXL फ़ोल्डर पर जाएं।
  • vbaProject.binएक हेक्स संपादक के साथ इसे निकालें और खोलें
  • "खोज और बदलें" करने के लिए बदल रहा है "सभी की जगह" DPBकरने के लिए DPX
  • परिवर्तनों को सहेजें, .binफ़ाइल को वापस ज़िप में रखें, इसे सामान्य विस्तार पर लौटाएं और फ़ाइल को सामान्य की तरह खोलें।
  • VB संपादक में प्रवेश करने के लिए ALT + F11 और चुनने के लिए प्रोजेक्ट एक्सप्लोरर में राइट-क्लिक करें VBA Project Properties
  • पर Protection टैब, नया पासवर्ड सेट करें।
  • क्लिक करें OK , फ़ाइल बंद , इसे फिर से खोलें, ALT + F11 दबाएं।
  • आपके द्वारा सेट किया गया नया पासवर्ड दर्ज करें।

यदि आप चुनते हैं तो इस बिंदु पर आप पासवर्ड को पूरी तरह से हटा सकते हैं।

एक कदम-दर-चरण वीडियो के साथ पूरा निर्देश मैंने " YouTube पर यहां " होने पर वापस " बनाया "

यह चौंकाने वाला है कि यह वर्कअराउंड सालों से वहां है, और Microsoft ने इस समस्या को ठीक नहीं किया है।


कहानी का नैतिक पहलू है?

Microsoft Office VBA प्रोजेक्ट पासवर्ड किसी भी संवेदनशील जानकारी की सुरक्षा के लिए भरोसेमंद नहीं हैं । यदि सुरक्षा महत्वपूर्ण है, तो तृतीय-पक्ष एन्क्रिप्शन सॉफ़्टवेयर का उपयोग करें।


9

कॉलिन पिकार्ड ज्यादातर सही है, लेकिन VBA पासवर्ड सुरक्षा के साथ पूरी फ़ाइल के लिए "पासवर्ड खोलने के लिए सुरक्षा" को भ्रमित न करें, जो पूर्व से पूरी तरह से अलग है और Office 2003 और 2007 के लिए समान है (Office 2007 के लिए, नाम बदलें फ़ाइल .zip पर जाएं और ज़िप के अंदर vbaProject.bin देखें)। और वह तकनीकी रूप से फ़ाइल को संपादित करने का सही तरीका है कि सही स्ट्रीम खोलने के लिए CFX जैसे OLE कंपाउंड डॉक्यूमेंट व्यूअर का उपयोग किया जाए। बेशक, यदि आप सिर्फ बाइट्स की जगह ले रहे हैं, तो सादे पुराने बाइनरी संपादक काम कर सकते हैं।

BTW, यदि आप इन क्षेत्रों के सटीक प्रारूप के बारे में सोच रहे हैं, तो उन्होंने इसे अभी दस्तावेजित किया है:

http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx


2
निम्न लिंक XSLM प्रारूप फ़ाइलों के लिए विवरण देता है। gbanik.blogspot.co.uk/2010/08/… ऊपर के यूहॉन्ग बाओ द्वारा उल्लिखित के रूप में एक ही समाधान है, लेकिन दिलचस्प पढ़ने के लिए बनाता है और स्क्रीनशॉट भी शामिल है।
१०:५० पर जॉनलेवन

7

यदि फ़ाइल एक मान्य ज़िप फ़ाइल है (पहले कुछ बाइट्स हैं 50 4B- जैसे प्रारूपों में उपयोग किया जाता है .xlsm), तो फ़ाइल को अनज़िप करें और सबफ़ाइल देखें xl/vbaProject.bin। यह एक सीएफबी फ़ाइल की तरह है.xls फाइलों की । XLS प्रारूप (सबफ़ाइल पर लागू) के लिए निर्देशों का पालन करें और फिर सामग्री को ज़िप करें।

XLS प्रारूप के लिए, आप इस पोस्ट में कुछ अन्य विधियों का पालन कर सकते हैं। मैं व्यक्तिगत रूप से DPB=ब्लॉक की खोज और पाठ की जगह लेना पसंद करता हूं

CMG="..."
DPB="..."
GC="..."

रिक्त स्थानों के साथ। यह सीएफबी कंटेनर आकार के मुद्दों को कम करता है।


7

मैंने ऊपर दिए गए कुछ समाधानों की कोशिश की और उनमें से कोई भी मेरे लिए काम नहीं करता है (एक्सेल 2007 xlsm फ़ाइल)। फिर मुझे एक और उपाय मिला जो पासवर्ड को पुनः प्राप्त करता है, न कि केवल इसे क्रैक करना।

इस कोड को मॉड्यूल में डालें, इसे चलाएं और इसे कुछ समय दें। यह ब्रूट फोर्स द्वारा आपके पासवर्ड को रिकवर करेगा।

Sub PasswordBreaker()

'Breaks worksheet password protection.

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

1
अच्छा! मुझे लगता है कि आपको एक डाउनवोट मिला क्योंकि आपका समाधान VBA मॉड्यूल के बजाय वर्कशीट को अनलॉक करता है। फिर भी मुझे यह मददगार लगा - इसलिए धन्यवाद!
PBD10017

1
मेरे पास यह एक मेरी व्यक्तिगत कार्यपुस्तिका है। लेखकों ने बॉब मैककॉर्मिक को मूल लेखक के रूप में उद्धृत किया जो बाद में नॉर्मन हरकर और जेई मैकगिम्से 2002 द्वारा संशोधित किया गया।
चार्ल्स बर्न

5

ElcomSoft एडवांस्ड ऑफिस पासवर्ड ब्रेकर और एडवांस्ड ऑफिस पासवर्ड रिकवरी प्रोडक्ट्स बनाता है जो इस केस पर लागू हो सकते हैं, जब तक कि यह दस्तावेज़ Office 2007 या पूर्व में बनाया गया था।


4

टॉम - मैंने शुरू में एक स्कूली त्रुटि की थी क्योंकि मैंने बाइट का आकार नहीं देखा था और इसके बजाय मैंने कॉपी की और बाद के प्रवेश तक स्थापित "सीएमजी" से चिपकाया। यह दो फ़ाइलों के बीच दो अलग-अलग पाठ आकार थे, हालांकि, और मैंने वीबीए परियोजना खो दी जैसे स्ट्यूबो ने चेतावनी दी थी।

HxD का उपयोग करते हुए, एक काउंटर ट्रैकिंग है कि आप कितनी फ़ाइल का चयन कर रहे हैं। सीएमजी से शुरू होने वाली कॉपी तब तक आती है जब तक कि काउंटर 8 एफ (143 के लिए हेक्स) नहीं पढ़ता है और इसी तरह लॉक की गई फ़ाइल में चिपकाने पर - मैं पेस्ट के अंत में "..." के दो बार के साथ समाप्त हो गया, जो किसी भी तरह से अजीब लग रहा था और लगभग महसूस किया। अप्राकृतिक, लेकिन यह काम किया।

मुझे नहीं पता कि यह महत्वपूर्ण है, लेकिन मैंने यह सुनिश्चित किया कि मैं एक्सेल में फाइल को फिर से खोलने से पहले दोनों हेक्स एडिटर को बंद कर देता हूं और एक्सेल कर देता हूं। मुझे तब VBProject Properties में VB Editor खोलने के लिए मेन्यू से गुजरना पड़ा और कोड अनलॉक करने के लिए 'नए' पासवर्ड में प्रवेश किया।

आशा है कि ये आपकी मदद करेगा।


4

मेरा उपकरण, VbaDiff , VBA को सीधे फ़ाइल से पढ़ता है, इसलिए आप हेक्स संपादक का सहारा लिए बिना अधिकांश कार्यालय दस्तावेजों से संरक्षित VBA कोड को पुनर्प्राप्त करने के लिए इसका उपयोग कर सकते हैं।


मेरे पास इस उपकरण का परीक्षण है और वास्तव में अच्छी तरह से काम करता है, हालांकि मुफ्त संस्करण पहले 53 लाइनों को पुनः प्राप्त करता है। अपनी फ़ाइल को पुनर्प्राप्त करने के लिए मुझे पासवर्ड अनलॉक करने के लिए एंडी के निर्देशों का पालन करना पड़ा। फिर मैंने दोनों पैन में VDDiff के साथ अपना xlsm खोला और फिर मैंने अपने कोड के साथ शीट पर क्लिक किया। मैंने इसे कॉपी-पेस्ट के साथ प्राप्त किया और इसे मेरी बरामद लेकिन vba-खाली एक्सेल फ़ाइल में डाल दिया।
thanos.a

2

संरक्षण एक्सेल में एक सरल पाठ तुलना है। एक्सेल को अपने पसंदीदा डीबगर में लोड करें ( ऑलिडबग मेरी पसंद का उपकरण है), उस कोड को ढूंढें जो तुलना करता है और इसे हमेशा सही वापस करने के लिए ठीक करता है, इससे आपको मैक्रोज़ तक पहुंचने देना चाहिए।


1

Windows 10 मशीन पर एक्सेल 2016 64-बिट के लिए, मैंने एक हेक्स संपादक का उपयोग किया है जो एक संरक्षित एक्सला के पासवर्ड को बदलने में सक्षम है (किसी अन्य एक्सटेंशन के लिए इसका परीक्षण नहीं किया है)। युक्ति: ऐसा करने से पहले एक बैकअप बनाएं।

मैंने जो कदम उठाए:

  1. Vx को हेक्स संपादक में खोलें (उदाहरण के लिए XVI)
  2. इस DPB पर खोजें
  3. DPB को DPX की तरह किसी और चीज़ में बदलें
  4. बचाओ!
  5. .Xla को फिर से खोलें, एक त्रुटि संदेश दिखाई देगा, बस जारी रखें।
  6. अब आप .xla के पासवर्ड को गुणों को खोलकर बदल सकते हैं और पासवर्ड टैब पर जा सकते हैं।

मुझे आशा है कि इसने आपकी कुछ मदद की!


मैं Excel 365 के नवीनतम संस्करण में Windows 10 पर इसका उपयोग करके एक पुराना .xls खोलने में सफल रहा, जबकि शीर्ष उत्तर दुर्भाग्य से अब काम नहीं कर रहा है। मैंने एचएक्सडी डाउनलोड किया और अंतिम पत्र को अनुशंसित की तरह बदल दिया, और त्रुटियों को छोड़ दिया। अब सब अच्छा है, धन्यवाद!
स्टार्नेस स्टूडेंट

0

आपकी एक्सेल फाइल का एक्सएमएल में एक्सटेंशन बदल जाता है। और इसे नोटपैड में खोलें। पासवर्ड फ़ाइल xml फ़ाइल में खोजें।

आप नीचे की रेखा की तरह देखते हैं;

Sheets("Sheet1").Unprotect Password:="blabla"

(मेरी खराब इंग्लिश के लिए माफ़ कीजिये)


क्या आप बता सकते हैं कि आपका जवाब पहले से उपलब्ध कराए गए बहुत अच्छे लोगों से बेहतर कैसे है?
नोएल विडमर

मेरे समाधान में एक कोड नहीं है। इसके अलावा बहुत कॉम्पैक्ट समाधान।
डेवलपर

1
यह समाधान जो आपने प्रदान किया है, वह 2019 में काम नहीं करता है

यह मेरे लिए ऑफिस 365 में भी काम नहीं करता है
थियोस.ए

0

यदि आप काम करते हैं Javaतो आप कोशिश कर सकते हैं VBAMacroExtractor। वीबीए स्क्रिप्ट निकालने के बाद .xlsmमुझे प्लेनटेक्स्ट में पासवर्ड मिला है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.