2009-03-04 35 views

Trả lời

12

Bạn sẽ tìm thấy một công cụ cho việc này ở đây:

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

Đó là một kịch bản VBS tự động hóa excel. Bạn có thể sửa đổi nó theo nhu cầu của bạn - lưu ý rằng nó không phải là hoàn hảo (đọc trang web để báo trước).

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

+2

Tập lệnh này ở trên không hoàn hảo. Sau khi tìm kiếm trên web trong một thời gian dài, cuối cùng tôi đã tìm thấy điều gì đó thực sự hoạt động: http://stackoverflow.com/a/25984759/2780179 . Nó có nhập mã, xuất, định dạng mã và hơn thế nữa. Bạn có thể sử dụng nó ngay lập tức, không cần phải chỉnh sửa bất kỳ sổ làm việc hiện có nào. – CodeKid

2

Khi tôi đang làm rất nhiều phát triển Excel VBA tôi đã thành thói quen xuất khẩu sang định dạng văn bản cho mỗi tập tin (mô-đun, vv) mỗi khi tôi làm một sự thay đổi (từ menu ngữ cảnh). Tôi giữ các tập tin trong kiểm soát nguồn cùng với nhị phân XLA. Điều này làm việc khá tốt cho tôi và không yêu cầu bất kỳ công cụ bên ngoài.

+1

Ngoài ra, quá trình xuất các thành phần VBA (mã, biểu mẫu) có thể được tự động với một số mã VBA: xem tại [Ron de Bruin] (https://www.rondebruin.nl/win/s9/win002.htm) & ở đây [Chip Pearson] (http://www.cpearson.com/excel/vbe.aspx). Tôi đã sửa đổi mã de Bruin và sử dụng một lá cờ trong tên ("SHARE _....") để nó vòng qua nó chỉ xuất các tập tin tôi muốn. – tjejojyj

0

SourceTools là tốt khi bạn sẵn sàng và chạy, nhưng nếu bạn đang cần phải xuất khẩu từ một số lượng lớn các bảng tính Excel, mở cửa mỗi người và xuất khẩu nó có thể là một chút tẻ nhạt.

VbaDiff (từ chối trách nhiệm: sản phẩm của tôi) có API có thể đọc qua nhiều tệp Excel và trích xuất mã VBA. Có một ví dụ về here - nó có thể dễ dàng được điều chỉnh để xuất mã vào một tệp, sẵn sàng để được đăng ký. Nếu bạn tốt với SharpSvn, bạn có thể thêm mã vào kho lưu trữ khi bạn đi!

Các vấn đề liên quan