Chciałbym napisać program VBA Diff w (najlepiej) Pythonie. Czy istnieje biblioteka Pythona, która pozwoli mi przeczytać VBA zawartą w arkuszu kalkulacyjnym Excel?

2
w.jacob.ward 5 wrzesień 2012, 22:32

2 odpowiedzi

Najlepsza odpowiedź

Oto kilka szybkich i brudnych kotła, aby zacząć. Używa obiektu Excel COM (rozwiązanie tylko systemu Windows):

from win32com.client import Dispatch
wbpath = 'C:\\example.xlsm'
xl = Dispatch("Excel.Application")
xl.Visible = 1
wb = xl.Workbooks.Open(wbpath)
vbcode = wb.VBProject.VBComponents(1).CodeModule
print vbcode.Lines(1, vbcode.CountOfLines)

To wydrukuje głupie makro nagrałem na ten przykład:

Sub silly_macro()
'
' silly_macro Macro
'

'
    Range("B2").Select
End Sub

Należy pamiętać, że Lines i VBComponents Użyj 1-indeksowania. VBComponents Obsługuje również indeksowanie według nazwy modułu. Należy również pamiętać, że Excel wymaga odwrotnych ukośników w ścieżkach.

Aby nurkować głębiej zobaczyć Pearsona Programowanie edytora VBA. (Powyższy przykład został brukowany z tego, co odtłuszczam stamtąd).

6
Community 8 maj 2018, 21:48

Stworzyłem aplikację, która nazywa się to Vbadiff. Jeśli podasz swoje dwa pliki Excel, porównuje kod VBA w każdym. Możesz także uruchomić go z wiersza poleceń lub użyć wersji, która jest wyposażona w interfejs API, jeśli chcesz zintegrować go z własnymi programami.

Możesz dowiedzieć się więcej na http://www.technicana.com/vbadiff-information.html.

Chris

0
Chris Spicer 5 październik 2012, 10:43