複数のExcelドキュメントからVBAコードをエクスポートしてバージョン管理に入れる[終了]

StackOverflow https://stackoverflow.com/questions/608872

質問

コードをSubversionリポジトリに追加できるように、多数のExcelドキュメントからVBAコードをエクスポートする方法を知っている人はいますか?各ドキュメントを手動で開いてコードをエクスポートする必要はありません。

役に立ちましたか?

解決

このためのツールはここにあります:

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

Excelを自動化するVBSスクリプトです。必要に応じて変更できます-完全ではないことに注意してください(警告についてはWebページを参照してください)。

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

-アダム

他のヒント

過去数年間、これを使用してコードをエクスポートし、保存しました。 Office 2003、2007で動作することを確認できます。2000年でも動作すると想定しています。

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

多くのExcel VBA開発を行っていたとき、変更を行うたびに(コンテキストメニューから)各ファイル(モジュールなど)のテキスト形式にエクスポートする習慣がありました。これらのファイルは、XLAバイナリとともにソース管理に保管しました。これは非常にうまく機能し、外部ツールを必要としませんでした。

SourceToolsは、一度起動すると実行できますが、多数のExcelブックからエクスポートする必要がある場合、各ブックを開いてエクスポートするのは少し面倒です。

VbaDiff(免責事項:私の製品)には、複数のExcelファイルを読み取ってVBAコードを抽出できるAPIがあります。 こちらの例があります-エクスポートに簡単に適用できますチェックインの準備ができたコードをファイルに追加します。SharpSvnが得意であれば、おそらくリポジトリにコードを追加することができます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top