Сценарий
При попытке выполнить метод 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?