с помощью следующего метода python я вызываю макрос Excel.Я был счастлив, когда заставил это работать, однако мне было интересно, что каждый раз, когда я выполнял это, я мог видеть временный файл / файл блокировки Windows с тем же именем, что и .XLA, с которого я использовал макрос.
class XlaMakeUnmake:
__configFile = 'xla_svn.cfg'
__vbaTools = 'makeProtected.xla'
__entries = {}
def __init__(self):
self.__readConfig()
def __newDirs(self, dir):
try:
os.makedirs(dir)
except OSError, e:
if e.errno != errno.EEXIST:
raise
### WILL ONLY WORK FOR UNPROTECTED
'''
filePath: path of XLA to unmake
outputDir: folder in which the lightweight xla and its components will be pushed to
'''
def unmake(self, filePath, outputDir):
xl = win32com.client.Dispatch("Excel.Application")
xl.Visible = 0
self.__newDirs(outputDir)
xl.Application.Run("'" + os.getcwd() + os.sep + self.__vbaTools + "'!Unmake", filePath, outputDir)
Когда я открываю диспетчер задач, я вижу, что процесс Excel все еще выполняется ... Как убить его, но чистым способом, когда работа выполнена?xl.Application.Run
запускает асинхронный вызов макроса?В этом случае это может быть сложно ...
Спасибо, ребята!;)