prosource

버전 제어에 넣을 다중 Excel 문서에서 VBA 코드 내보내기

probook 2023. 6. 22. 21:59
반응형

버전 제어에 넣을 다중 Excel 문서에서 VBA 코드 내보내기

많은 Excel 문서에서 VBA 코드를 내보내고 하위 버전 저장소에 코드를 추가할 수 있는 방법을 아는 사람이 있습니까?각 문서를 수동으로 열고 코드를 내보낼 필요가 없습니다.

이를 위한 툴은 다음과 같습니다.

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

-아담

지난 몇 년 동안 코드를 내보내고 저장하는 데 성공했습니다.2007년 Office 2003에서 작동하는 것을 확인할 수 있습니다.2000년에도 작동하는 것 같습니다.

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

Excel VBA 개발을 많이 하면서 (컨텍스트 메뉴에서) 변경할 때마다 각 파일(모듈 등)의 텍스트 형식으로 내보내는 습관이 생겼습니다.저는 그 파일들을 XLA 바이너리와 함께 소스 제어로 유지했습니다.이것은 저에게 꽤 효과적이었고 외부 도구가 필요하지 않았습니다.

SourceTools는 일단 작동하고 실행하면 좋지만, 많은 Excel 워크북에서 내보내야 하는 경우 각 워크북을 열고 내보내는 것이 조금 지루할 수 있습니다.

VbaDiff(disclaimer: my product)는 여러 Excel 파일을 읽고 VBA 코드를 추출할 수 있는 API를 가지고 있습니다.를 들어, 체크인할 준비가 된 파일로 코드를 내보내도록 쉽게 조정할 수 있습니다.SharpSvn을 잘 사용한다면, 이동하면서 저장소에 코드를 추가할 수도 있습니다!

언급URL : https://stackoverflow.com/questions/608872/exporting-vba-code-from-multiple-excel-documents-to-put-into-version-control

반응형