>

내 문제에 대한 해결책을 찾지 못해 처음으로 글을 씁니다. 사용자가 Excel에서 일부 Python 프로그램을 시작할 수 있도록하고 싶습니다. 그래서 어느 시점 에서이 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"

여러 테스트 후 파이썬에서 오류가 발생하는 행은 다른 모듈을 가져 오려고 할 때입니다 (이 VBA 코드가 파이썬에서 아래 행없이 작동한다는 것을 정확하게 알고 있습니다).

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()

매우 까다로운 질문이므로 도와 주시겠습니까?

여러분 감사합니다.

  • 답변 # 1

    명령 줄에서 프로그램을 시작할 수 있습니까?

    엑셀로 배치 파일을 생성하지 않은 이유는 무엇입니까?

관련 자료

  • 이전 html - 부트 스트랩 4 - 버튼 레이블이있는 가운데 텍스트
  • 다음 c# - [A] MySqlDataMySqlClientMySqlConnection을 [B] MySqlDataMySqlClientMySqlConnection으로 캐스트 할 수 없습니다