2009-03-18 5 views
4

Excel에서 추가 기능을 사용하는 일련의 매크로가 있습니다. 매크로를 사용하면 다른 프로그램이 수행하는 작업을 제어 할 수있는 Microsoft 자동화 개체라는 다른 프로그램과 상호 작용할 수 있습니다. 예를 들어 다른 프로그램에서 제공하는 목록을 필터링하여 Excel 통합 문서의 목록과 일치시키는 추가 기능의 필터 도구가 있습니다. 그러나 이것은 느립니다. 나는 다른 프로그램에 5 만 줄이있을 수 있으며 Excel에서 3 천 줄의 목록과 일치하지 않는 줄을 모두 필터링하려고합니다. 이 유형의 일치에는 약 30-40 분이 걸립니다. 필자는 매칭 프로세스가 몇 초 안에 완료 될 수 있다고 생각하기 때문에 파이썬으로이 작업을 수행 할 방법이 있는지 궁금해하기 시작했습니다.Python에서 Microsoft 자동화 개체에 액세스

편집 : 제안을 바탕으로

고맙다 -이 하몬드의 책을 보는 나는 자원의 번호를 발견했다. 그러나, 내가 아직도 탐구하고 있지만 이것들 중의 대부분이 오래되었던 것처럼 보인다. 예를 들어, Hammond의 저서는 2000 년에 출판되었는데, 이는 약 10 년 전에 작사가 끝났음을 의미합니다. Correction 2/2009 빌드로 PyWin32라는 패키지를 발견했습니다.

내가 시작해야합니다. 감사합니다

+0

씨 하몬드는 당신이 또한 유용하게 사용할 수있는 엑셀 물건 http://sourceforge.net/projects/pywin32/ – bernie

+0

에서 그의 "윈도우 확장을위한 파이썬"의 새로운 버전을 출시했다 xlrd 및 xlwt 라이브러리 . PyPI에서이 두 가지를 찾을 수 있습니다. http://pypi.python.org/pypi – bernie

답변

4

Mark Hammond와 Andy Robinson은 Python의 Windows COM 개체에 액세스 할 때 the book을 작성했습니다.

Here은 Excel을 사용한 예입니다.

+0

oreilly 링크가 깨졌습니다. –

+1

Thanks, @AndyW. 결정된. – bernie

0

필자가 아는 한 Windows에서 파이썬으로 COM 객체 (자동화 객체는 무엇인가)를 만들 수 있습니다. 그런 다음 자동화를 통해 목록을 가져올 수 있다고 가정하면 Python에서 원하는 것을 쉽게 수행 할 수 있어야합니다.

0

그러나 아직 조사 중이지만 많은 것이 오래된 것 같습니다.

COM입니다. 인터페이스는 적어도 1993 년 이후로 변경되지 않았습니다.

또한이 패키지는 Python.org 웹 사이트에서 볼 수 없습니다. COM 패키지를 검색했지만 유용한 것은 아무것도 보지 못했습니다. 파이썬 3.0 지원을 포함

최신 업데이트를 2 월 2009 년이었다 http://python.net/crew/mhammond/win32/ http://sourceforge.net/projects/pywin32/

.

14

아마도 win32com 패키지가 필요할 것입니다.

여기는 Excel에서 com을 사용하는 방법을 보여주는 http://www.markcarter.me.uk/computing/python/excel.html에 나와있는 샘플 예입니다. 이것은 좋은 시작일 것입니다.

# this example starts Excel, creates a new workbook, 
# puts some text in the first and second cell 
# closes the workbook without saving the changes 
# and closes Excel. This happens really fast, so 
# you may want to comment out some lines and add them 
# back in one at a time ... or do the commands interactively 


from win32com.client import Dispatch 


xlApp = Dispatch("Excel.Application") 
xlApp.Visible = 1 
xlApp.Workbooks.Add() 
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!' 
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!' 
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1 
xlApp.Quit() 
xlApp.Visible = 0 # see note 2 
del xlApp 

# raw_input("press Enter ...") 
+1

+1 : 코드 샘플 – jfs

관련 문제