Запуск метода vba из python с длинным путем в Windows 10 - PullRequest
0 голосов
/ 17 февраля 2020

Сценарий

При попытке выполнить метод main из module из example.xlsm из python файла convertOds.py возникли небольшие трудности. Путь к файлу Excel слишком длинный, так как он длиннее 218 символов. Теперь я мог бы обойти это и создать временную папку на c:/temp, но затем я потерял некоторую общность, например, что если p c, на котором он работает, не имеет диска c:. Поэтому я пытаюсь запустить метод Excel с глубокого пути независимо от.

Шаги выполнения кода

Код выполняется путем открытия Anaconda, просмотра каталога example.xlsm, convertOds.py находится в том же каталоге, что и файл example.xlsm. Так, например:

E:
cd "E:\long path of more than 218 characters/"
python convertOds.py

Код

convertOds.py состоит из:


import xlwings as xw

if __name__ == '__main__':
    file = r'E:\long path of more than 218 characters/example.xlsm'
    wb = xw.Book(file)
    macro = wb.macro("main")
    macro()

Ошибка

Код дает следующее сообщение об ошибке когда я запускаю его из anaconda с python 3.7:

Файл ">", строка 8, в Open pywintypes.com_error: (-2147352567, 'Возникло исключение.', (0 , «Microsoft Excel», «Невозможно открыть файл, поскольку путь к файлу превышает 218 символов. Попробуйте сократить путь или имя файла.», «Xlmain11.chm», 0, -2146827284), нет)

Итак, первое и второе, что я сделал, - включил длинные пути в regedit и gpedit.msc и перезагрузился, как описано ниже:

# 1.1 Press: start>Type: run>Type: gpedit.msc <enter>>Go to: Computer Configuration\Administrative Templates\System\Filesystem
# 1.2 And enable: "Enable Win32 long paths".
# 2. Then also enable long paths in regedit:
# 2.1 Press: start>Type: regedit<enter>>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
# 2.2 And enable: LongPathsEnabled

Однако это все равно приводит к ошибка описана выше.

Вопрос

Есть ли способ выполнить метод main из module1 из example.xlsm из python, даже если он имеет длинный путь> 260?

...