запустить макрос Excel из Python (но процесс Excel остается в памяти) - PullRequest
0 голосов
/ 01 декабря 2011

с помощью следующего метода 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 запускает асинхронный вызов макроса?В этом случае это может быть сложно ...

Спасибо, ребята!;)

1 Ответ

2 голосов
/ 02 декабря 2011

Я не знаю Python, но вам нужно использовать:

xl.Quit
...