2017-11-09 26 views
0

私はwin32com(pywin32)とMicrosoft Word's Object Modelを使用して2つのWord文書を比較しようとしています(Microsoft Wordで2つの文書を比較 - >比較)。以下は、私はこのために書かれているコードです: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 

私はこのエラーがスローされている理由を理解することはできませんよ。私は本当にこの問題を解決したい。助けてください。あなたが機能Application.CompareDocuments()に渡す引数は、そのような「Original.docx」と「Revised.docx」として書かれている、の観点からDocument対象ではないため、エラーがスローされたアドバンス

答えて

0

感謝あなたのPythonコードのビュー。あなたは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を持っています。

あなたのために働くかどうか教えてください。

関連する問題