#!/usr/bin/env python3 # -*- coding: utf-8 -*- import win32com.client appl = win32com.client.Dispatch("Access.Application") appl.visible = 0 appl.OpenCurrentDatabase(r'C:\Users\Lorenz\Desktop\wgmaster2010.accdb', True, True) dict_modules = {} try: comps = appl.VBE.VBProjects(1).VBComponents for i in comps: name = i.name comp = comps(name) fname = f'{name}.' + {1: 'bas', 100: 'frm'}[i.type] lines = comp.CodeModule.CountOfLines # To jump empty modules if lines == 0: pass else: text = comp.CodeModule.Lines(1,lines) dict_modules[fname] = [text] finally: appl.CloseCurrentDatabase() for name, data in dict_modules.items(): print(name) with open(f'dump/{name}', 'wb+') as f: txt = ''.join(data) f.write(txt.encode('utf8'))