2009-03-04 6 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

위의 스크립트는 완벽하지 않습니다. 오랫동안 웹을 검색 한 후에 마침내 실제로 작동하는 것을 발견했습니다. 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을 잘 사용하고 있다면 저장소에 코드를 추가 할 수 있습니다.