2009-03-04 97 views

回答

12

你會爲這個在這裏找到一個工具:

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

這是一個VBS腳本使Excel自動。您可以根據自己的需要對其進行修改 - 請注意,它並不完美(請閱讀網頁瞭解注意事項)。

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 

- 亞當

+2

上面的腳本遠非完美。在長時間搜索網絡後,我終於找到了一些實際可行的東西: http://stackoverflow.com/a/25984759/2780179 。 它具有代碼導入,導出,代碼格式和更多。您可以立即使用它,無需編輯任何現有的工作簿。 – CodeKid 2014-10-11 23:23:03

2

當我做了很多的Excel VBA開發的我進入導出到文本格式的每個文件(模塊等),我做了一個變化,每次的習慣(從上下文菜單)。我將這些文件保存在XLA二進制文件的源代碼控制中。這對我來說工作得很好,並且不需要任何外部工具。

+1

此外,可以使用某些VBA鱈魚來自動導出VBA組件(代碼,表單)的過程:請參見[Ron de Bruin](https://www.rondebruin.nl/win/s9/win002.htm)在這裏[Chip Pearson](http://www.cpearson.com/excel/vbe.aspx)。我修改了de Bruin代碼,並在名稱中使用了一個標記(「SHARE _....」),以便循環遍歷它只導出我想要的文件。 – tjejojyj 2017-07-17 01:08:40

0

SourceTools好,一旦你啓動和運行,但如果你需要從大量的Excel工作簿中的每一個出口,開放和出口這可能是有點乏味。

VbaDiff(免責聲明:我的產品)具有可讀取多個Excel文件並提取VBA代碼的API。有一個here的例子 - 它可以很容易地適用於將代碼導出到文件中,隨時可以檢入。如果您對SharpSvn很好,那麼您可以隨時將代碼添加到存儲庫中!