2017-11-09 1 views
0

두 개의 Word 문서를 비교하기 위해 win32com (pywin32) 및 Microsoft Word's Object Model을 사용하려고합니다. Microsoft Word에서 검토 -> 비교의 두 문서를 비교하는 작업 자동화).Python을 사용하여 Word 문서의 자동화 자동화

import win32com.client 
Application=win32com.client.gencache.EnsureDispatch("Word.Application") 
Document=Application.Documents.Add() 
Application.CompareDocuments("Original.docx","Revised.docx") 

하지만 다음과 같은 오류가 점점 오전 :

Traceback (most recent call lastFile "<pyshell#9>", line 1, in <module> 
Application.CompareDocuments("Original.docx","Revised.docx") 

File "C:\Python36\lib\site-packages\win32com\gen_py\00020905-0000-0000-C000-000000000046x0x8x6\_Application.py", line 79, in CompareDocuments 
, CompareFields, CompareComments, CompareMoves, RevisedAuthor, IgnoreAllComparisonWarnings 

File "C:\Python36\lib\site-packages\win32com\client\__init__.py", line 466, in _ApplyTypes_ 
return self._get_good_object_(self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),user, resultCLSID) 

TypeError: The Python instance can not be converted to a COM object 

나는이 오류가 발생되는 이유를 이해 할 수없는 나는 다음은 내가 이것을 위해 작성한 코드입니다. 이 문제를 정말로 해결하고 싶습니다. 도와주세요. 오류가 발생

답변

0

사전에

덕분에 당신은 "Original.docx"와 "Revised.docx"로 기록되고, 기능 Application.CompareDocuments() 전달 인자 때문에,의 지점에서 Document 개체 수 없습니다 파이썬 코드보기.

당신은 Application.Documents.Open()

나를 위해 작동하는 코드 인 기능이 객체를 생성해야합니다

import win32com.client 

path = "C:\ThePath\OfYourFolder\WithYourDocuments\\" 
# note the \\ at the end of the path name to prevent a SyntaxError 

#Create the Application word 
Application=win32com.client.gencache.EnsureDispatch("Word.Application") 

# Compare documents 
Application.CompareDocuments(Application.Documents.Open(path + "Original.docx"), 
          Application.Documents.Open(path + "Revised.docx")) 

# Save the comparison document as "Comparison.docx" 
Application.ActiveDocument.SaveAs (FileName = path + "Comparison.docx") 
# Don't forget to quit your Application 
Application.Quit() 

를 사용해서 당신의 Comparison.docx 당신이 확인 열 수 있습니다.

작동하는지 알려주세요.

관련 문제