2012-10-29 6 views
1

저는 파이썬을 사용하고 있으며 사무실 2010에서 탁월한 성과를 거두고 있습니다. txcel com 오브젝트에 바인드하기 위해 파이썬의 makepy 모듈을 사용했습니다.Python Makepy with Office 2013 (office 15)

그러나 다른 컴퓨터에서 나는 office 2013을 설치했고 makepy를 실행했을 때 no excel 옵션이 나열되었습니다 ('Microsoft Excel 14.0 Object Library'가 makepy로 나열된 Office 2010과 반대).

레지스트리에서 'Microsoft Excel 15.0 Object Library'를 (를) 검색했습니다. 사용하려고 시도 : makepy -d 'Microsoft Excel 15.0 Object Library' 하지만 작동하지 않았다.

도움을 많이 주시면 감사하겠습니다. 감사합니다. .

답변

1

여기에 내가 파이썬 윈 콘솔에서 내 win32com 오피스 2015의 상호 작용 복사하여 붙여 넣기를 : U는 완벽하게 작동 볼 수 있듯이

PythonWin 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 20:30:21) [MSC v.1600 64 bit (AMD64)] on win32. 
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information. 
>>> 
>>> 
>>> from win32com.client import gencache 
>>> gencache.EnsureModule('{00020813-0000-0000-C000-000000000046}', 0, 1, 8) 
Loading reg typelib {00020813-0000-0000-C000-000000000046} 1 8 0 
Rebuilding: 1 8 
<module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x8' from 'C:\\Python33\\lib\\site-packages\\win32com\\gen_py\\00020813-0000-0000-C000-000000000046x0x1x8.py'> 
>>> import win32com.client as client 
>>> client.Dispatch("Excel.Application") 
<win32com.gen_py.Microsoft Excel 15.0 Object Library._Application instance at 0x75090800> 

.

gencache 모듈의 모든 print 문을 참조 할 수 있도록 설정했습니다.

감사합니다.

0

문제는 win32com 모듈이 Typelib 레지스트리 항목에 대해 win32 키를 찾지 만 Office 15.0에는 일부 win64 키가 있습니다.

# Only care about "{lcid}\win32" key - jump straight there. 
try: 
    key4 = win32api.RegOpenKey(key3, "%s\\win32" % (lcid,)) 
except win32api.error: 
    continue 

및과 같이 수정 :이 문제를 해결하려면 다음과 같습니다 Lib/site-packages/win32com/client/selecttlb.py의 일부를 찾을 수

# Only care about "{lcid}\win32" key - jump straight there. 
try: 
    key4 = win32api.RegOpenKey(key3, "%s\\win32" % (lcid,)) 
except win32api.error: 
    try: 
     key4 = win32api.RegOpenKey(key3, "%s\\win64" % (lcid,)) 
    except win32api.error: 
     continue 

오래된 질문을하지만 난이 사람을 도움이되기를 바랍니다.

0

wilywampa 님의 답변으로 문제가 해결되었습니다. 그러나 win32com\client\combrowse.py에있는 combrowse.py은 등록 된 형식 라이브러리 폴더에서 IID (인터페이스 식별자)를 가져온 다음 @cool_n_curious에 제안 된대로 코드와 통합 할 수 있습니다. 그러나 이전에 언급했듯이 wilywampa 님의 답변으로 문제가 해결되고 평소처럼 makepy.py 유틸리티를 사용할 수 있습니다.