2013-10-05 3 views
1

저는 Excel VBA (저는 잘 알고 있습니다)에서 Python에 액세스하는 데 어려움을 겪고 있습니다. 매우 유용한 답변이 여기에 있습니다 (아래에 재현). 나는 매우 신중하게 단계를 따라 갔다. 파이썬 3.3이나 파이썬 2.7을 사용하던간에 같은 오류가 발생한다. PyScript.Language = "파이썬"오류 메시지가 "실행 시간 오류 380 : 지정된 언어에 대한 스크립트 엔진을 만들 수 없습니다 내가 VBA 코드를 실행하는 명령 단추를 사용하면Excel VBA에서 Python 명령을 어떻게 실행할 수 있습니까?

,이 문장에서 실패 "

어떤 아이디어입니까?

내가 사용하려고하는 stackoverflow에서 대답은 다음과 같습니다.

주의 깊게

  1. 이동은 ActiveState 다음 단계에 따라 [1] MSI 설치 [의 ActivePython 2.5.7]을 얻는다.
    내가
  2. 한 번 설치
  3. 완료, 명령 프롬프트 창을 열어 당신의 Windows 시스템에 설치하고

    C로 이동의 2.6.x와 DLL 지옥의 문제가 있었다 : \ Python25 \ lib 디렉토리 \ 사이트 - 패키지 \ 파이썬

  4. : win32comext \ axscript 클라이언트 \

  5. 는 등록 된 메시지를 볼 수 \> python pyscript.py 실행

  6. 이동 MS 오피스 엑셀 및 오픈 워크 시트 도구> 매크로를

  7. 이동>, Visual Basic 편집기
  8. Microsoft 스크립트 제어에 대한 참조를 추가합니다! [대체 텍스트] [2]
  9. a를 새로운 사용자 양식. MSScriptControl.ScriptControl

    Private Sub CommandButton1_Click() 
        If PyScript Is Nothing Then 
         Set PyScript = New MSScriptControl.ScriptControl 
         PyScript.Language = "python" 
         PyScript.AddObject "Sheet", Workbooks(1).Sheets(1) 
         PyScript.AllowUI = True 
        End If 
        PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'" 
    End Sub 
    

실행 을 정의 폼에서 코드 편집기에있는 명령

  • 스위치를 추가하고 으로 다음 코드

    희미한에서 WithEvents PyScript를 삽입합니다. 필요에 따라 즐기고 확장하십시오.

  • +0

    그냥'PyScript.Language = "Python"'을 시도해보십시오. – martineau

    +0

    파이썬 3.3에서 동일한 오류가 발생했습니다. 또한 설치/등록을 확인했습니다.MS의 얇은 문서는'ScriptControl'은'VBScript' 나'JScript' 만 지원한다고 제안합니다. http://msdn.microsoft.com/en-us/library/aa227400(v=vs.60).aspx 이것보다 다른 방법을 사용해야합니다. 그것은 다른 질문에 너무 많은 상영 물을 어떻게 얻었는지 확실하지 않지만 작동하지 않는 것 같습니다. –

    +0

    필자는 python에 대한 답을 이렇게하기에 충분하지 않다. http://newtonexcelbach.wordpress.com/2013/09/24/python-for-vba-users-1/ –

    답변

    3

    저는 32 비트 Excel 2010 및 Anaconda Python 2.7을 실행하고 있습니다. 나는 사용자의 폼이나 버튼을 만들지 않고 단순한 것을 유지하고 dim 문에서 "WithEvents"를 제거하고 Sub Public을 만들었다는 점을 제외하고는 (앞에서 설명한 것처럼) 정확하게 절차를 따랐다. Alt-F8을 사용하여 워크 시트에서 매크로를 실행하면 문제없이 작동합니다.

    또한 Excel 2013에서 테스트했으며 아무런 문제가 없었습니다.

    Public Sub TestPyScript() 
    Dim PyScript As MSScriptControl.ScriptControl 
        If PyScript Is Nothing Then 
         Set PyScript = New MSScriptControl.ScriptControl 
         PyScript.Language = "python" 
         PyScript.AddObject "Sheet", Workbooks(1).Sheets(1) 
         PyScript.AllowUI = True 
        End If 
        PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'" 
    End Sub 
    
    +1

    와우 MSScriptControl.ScriptControl은 파이썬을 훌륭하게 처리합니다. –

    관련 문제