from pywintypes import com_error import win32com import paths win32com.__gen_path__=paths.config_path(u"com_cache") import sys import os sys.path.append(os.path.join(win32com.__gen_path__, ".")) from win32com.client import gencache fixed=False def prepare_gencache(): gencache.is_readonly = False gencache.GetGeneratePath() def patched_getmodule(modname): mod=__import__(modname) return sys.modules[modname] def load_com(*names): global fixed if fixed==False: gencache._GetModule=patched_getmodule fixed=True result = None for name in names: try: result = gencache.EnsureDispatch(name) break except com_error: continue if result is None: raise com_error("Unable to load any of the provided com objects.") return result