Я впервые пишу, потому что действительно не нашел решения своей проблемы.Я хочу разрешить моему пользователю запускать некоторые программы на Python из Excel.Итак, у меня есть этот код VBA в какой-то момент:
lg_ErrorCode = wsh.Run(str_PythonPath & " " & str_PythonArg, 1, bl_StopVBwhilePython)
If lg_ErrorCode <> 0 Then
MsgBox "Couldn't run python script! " _
+ vbCrLf + CStr(lg_ErrorCode)
Run_Python = False
End If
str_PythonPath = "C:\Python34\python.exe C:\Users\XXXX\Documents\4_Python\Scan_FTP\test.py"
str_PythonArg = "arg1 arg2"
После многократного тестирования строка ошибки в Python - это когда я пытаюсь импортировать другой модуль (я уточняю, что этот код VBA работает без строки нижев Python):
import fct_Ftp как ftp
Архитектура модуля выглядит следующим образом:
4_Python
-folder: Scan_FTP
- file: test.py (The one launch from VBA)
-file: fct_Ftp.py
(Для информации я изменяю архитектуруфайл, и попробуйте скопировать файл в другое место, чтобы проверить его безуспешно)
При импорте файла Test.py не возникает проблем с:
import sys, os
sys.path.append('../')
Но из VBA этот импорт не работает.Итак, я нашел это более общее решение, которое не работает также из Excel / VBA
import sys, os
def m_importingFunction():
str_absPath = os.path.abspath('')
str_absPathDad = os.path.dirname(str_absPath)
l_absPathSons = [os.path.abspath(x[0]) for x in os.walk('.')]
l_Dir = l_absPathSons + [str_absPathDad]
l_DirPy = [Dir for Dir in l_Dir if 'Python' in Dir]
for Dir in l_DirPy:
sys.path.append(Dir)
print(Dir)
m_importingFunction()
try:
import fct_Ftp as ftp
# ftp = __import__ ("fct_Ftp")
write += 'YAAAA' # write a file YAAAA from Python
except:
write += 'NOOOOOO' # write a file NOOOOO from VBA
f= open(write + ".txt","w+")
f.close()
Не могли бы вы помочь мне, поскольку это очень сложные вопросы?
Большое спасибо вамребята.