2016-10-12 6 views
0

Python win32com을 사용하여 IRibbonControl을 매개 변수로 사용하는 vba 매크로를 실행하려고합니다.IRibbonControl을 매개 변수로 사용하는 Python win32com을 통해 vba 매크로를 실행하는 방법

예를 들어, 내 VBA를 하위 보이는 것처럼

Public Sub test(control As IRibbonControl) 

    blabla 

End Sub 

그리고

그리고 다음 파이썬 win32com을 사용하여 테스트 서브를 호출 아래.

테스트 기능의 매개 변수에는 무엇을 넣어야합니까?

import os 
import win32com.client 

from win32com.client import DispatchEx 

xl = DispatchEx('Excel.Application') 
xl.Workbooks.Open("myexcelfile.xlsm") 

xl.Application.Run("test", some magic needs here) 
+1

나는 그걸 찾기 어려울 것이라고 생각한다. 만약 당신이 VBA를 제어한다면, 당신은'application.Run'을 사용하여 호출 할 수있는 별도의 서브 루틴으로 제어 처리기에서 기능을 분리하는 것이 가장 좋다. –

답변

0

당신은 IRibbonControl를 구현 파이썬 측에 객체가 필요하고, Excel로 다시 매개 변수로 되었 것이다.

COM 추가 기능 (https://support.microsoft.com/en-us/kb/291392)을 IDTExensibility2으로 구현하면 위와 같은 생각이 드는 유일한 방법이 있습니다. 그런 다음 Excel 응용 프로그램 객체를 제공하는 OnConnection 메서드 (파이썬 COM 서버에서)를 호출하게됩니다.

거기에서 리본 컨트롤에 대한 참조를 얻을 수 있습니다.

나는 지금까지 아무런 파이썬 COM 엑셀 추가 기능을 얻지 못했다는 것을 인정해야한다.

또는을 하위 응용 프로그램의 Excel 응용 프로그램에서 더 이상 얻을 수 없으며 인수 목록에서 제거 할 수 있습니까?

+0

그것은 추가 기능을 중단하지 않고 VBA의 메서드 호출에서 해당 인수를 제거 할 수 없습니다. –