2009-03-04 18 views

答えて

12

あなたはここで、このためのツールを見つけることができます:

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

これは、Excelを自動化する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

私から、私はそれぞれのファイル(モジュールなど)私は変更を行ったたびに、テキスト形式にエクスポートするのが習慣になっエクセルVBA開発の多くを(やっていた
+2

上記のスクリプトは完全ではありません。長い時間Webを検索した結果、実際には実際に動作するものが見つかりました。 http://stackoverflow.com/a/25984759/2780179 コードのインポート、エクスポート、コードの書式設定などがあります。既存のワークブックを編集する必要はなく、すぐに使用できます。 – CodeKid

2

コンテキストメニュー)。これらのファイルはXLAバイナリとともにソース管理していました。これは私にとってはうまくいっていて、外部ツールを必要としませんでした。

+1

さらに、VBAコンポーネント(コード、フォーム)をエクスポートするプロセスは、いくつかのVBAコードで自動化できます。[Ron de Bruin](https://www.rondebruin.nl/win/s9/win002.htm) &ここ[チップピアソン](http://www.cpearson.com/excel/vbe.aspx)私はde Bruinのコードを修正し、名前にフラグ( "SHARE _....")を使用しました。ループを通って、必要なファイルのみをエクスポートします。 – tjejojyj

6

私は過去数年間このコードをエクスポートして保存しています。私はそれがOffice 2003,2007で動作することを確認することができます。私はそれが2000年にも動作すると仮定します。あなたが稼働している一度

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

0

SourceToolsは良いですが、あなたは、Excelブックの大多数から一つ一つの開口部をエクスポートする必要がとエクスポートしている場合、それは少し面倒かもしれません。

VbaDiff(免責事項:私の製品)には、複数のExcelファイルを読み込んでVBAコードを抽出できるAPIがあります。 hereの例があります。コードをファイルにエクスポートしてチェックインできる状態になっています.SharpSvnを使っていれば、リポジトリにコードを追加することができます。