2009-03-04 12 views
17

क्या किसी को भी कई एक्सेल दस्तावेज़ों से वीबीए कोड निर्यात करने का कोई तरीका पता है, ताकि कोड को उपवर्तन भंडार में जोड़ा जा सके? प्रत्येक दस्तावेज़ मैन्युअल रूप से खोलने और कोड निर्यात करने के बिना।एकाधिक एक्सेल दस्तावेज़ों से वर्जन नियंत्रण में डालने के लिए वीबीए कोड निर्यात करना

उत्तर

12

आप इस यहाँ के लिए एक उपकरण मिल जाएगा:

http://www.pretentiousname.com/excel_extractvba/index.html

यह एक VBS स्क्रिप्ट एक्सेल को स्वचालित कि है। आप इसे अपनी आवश्यकताओं के अनुसार संशोधित कर सकते हैं - ध्यान दें कि यह सही नहीं है (चेतावनी के लिए वेबपृष्ठ पढ़ें)।

option explicit 

Const vbext_ct_ClassModule = 2 
Const vbext_ct_Document = 100 
Const vbext_ct_MSForm = 3 
Const vbext_ct_StdModule = 1 

Main 

Sub Main 
    Dim xl 
    Dim fs 
    Dim WBook 
    Dim VBComp 
    Dim Sfx 
    Dim ExportFolder 

    If Wscript.Arguments.Count <> 1 Then 
     MsgBox "As the only argument, give the FULL path to an XLS file to extract all the VBA from it." 
    Else 

     Set xl = CreateObject("Excel.Application") 
     Set fs = CreateObject("Scripting.FileSystemObject") 

     xl.Visible = true 

     Set WBook = xl.Workbooks.Open(Trim(wScript.Arguments(0))) 

     ExportFolder = WBook.Path & "\" & fs.GetBaseName(WBook.Name) 

     fs.CreateFolder(ExportFolder) 

     For Each VBComp In WBook.VBProject.VBComponents 
      Select Case VBComp.Type 
       Case vbext_ct_ClassModule, vbext_ct_Document 
        Sfx = ".cls" 
       Case vbext_ct_MSForm 
        Sfx = ".frm" 
       Case vbext_ct_StdModule 
        Sfx = ".bas" 
       Case Else 
        Sfx = "" 
      End Select 
      If Sfx <> "" Then 
       On Error Resume Next 
       Err.Clear 
       VBComp.Export ExportFolder & "\" & VBComp.Name & Sfx 
       If Err.Number <> 0 Then 
        MsgBox "Failed to export " & ExportFolder & "\" & VBComp.Name & Sfx 
       End If 
       On Error Goto 0 
      End If 
     Next 

     xl.Quit 
    End If 
End Sub 

-Adam

+2

ऊपर यह स्क्रिप्ट सही से बहुत दूर है। वेब को लंबे समय तक खोजने के बाद मुझे अंततः कुछ ऐसा लगता है जो वास्तव में काम करता है: http://stackoverflow.com/a/25984759/2780179 । इसमें कोड आयात, निर्यात, कोड स्वरूपण और बहुत कुछ है। आप इसे तुरंत इस्तेमाल कर सकते हैं, किसी भी मौजूदा कार्यपुस्तिका को संपादित करने की आवश्यकता नहीं है। – CodeKid

2

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

+1

इसके अलावा वीबीए घटकों (कोड, रूपों) को निर्यात करने की प्रक्रिया को कुछ वीबीए कोड के साथ स्वचालित किया जा सकता है: यहां देखें [रॉन डी ब्रुइन] (https://www.rondebruin.nl/win/s9/win002.htm) और यहां [चिप पियरसन] (http://www.cpearson.com/excel/vbe.aspx)। मैंने डी ब्रुइन कोड को संशोधित किया है और नाम ("SHARE _....") में एक ध्वज का उपयोग किया है, क्योंकि यह इसके माध्यम से लूप करता है केवल उन फ़ाइलों को निर्यात करता है जिन्हें मैं चाहता हूं। – tjejojyj

6

मैंने पिछले कुछ वर्षों से अपने कोड को निर्यात करने और इसे सहेजने के लिए सफलतापूर्वक इसका उपयोग किया है। मैं पुष्टि कर सकता हूं कि यह Office 2003, 2007 में काम करता है। मुझे लगता है कि यह 2000 में भी काम करता है।

http://www.codeproject.com/KB/office/SourceTools.aspx

0

SourceTools अच्छा है एक बार तुम और चल रहा हो, लेकिन यह थोड़ा कठिन हो सकता है अगर आप, खोलने हर एक एक्सेल कार्यपुस्तिका की एक बड़ी संख्या से निर्यात करने के लिए निर्यात की आवश्यकता होगी, और कर रहे हैं।

VbaDiff (अस्वीकरण: मेरे उत्पाद) में एक एपीआई है जो एकाधिक एक्सेल फ़ाइलों के माध्यम से पढ़ सकती है और वीबीए कोड निकाल सकती है। here का एक उदाहरण है - इसे आसानी से फ़ाइल में कोड निर्यात करने के लिए अनुकूलित किया जा सकता है, चेक-इन करने के लिए तैयार है। यदि आप SharpSvn के साथ अच्छे हैं, तो आप संभवतः कोड को भंडार में जोड़ सकते हैं!

संबंधित मुद्दे