Mark Sloboda <denchan at earthlink.net> wrote in <mailman.988385621.26593.python-list at python.org>: > Hello, > I have to open a Word file which is text, save it as DOS-encoded text > under a different name, and close it. > A similar VB code example is: > myDocname = ActiveDocument.Name > pos = InStr(myDocname, ".") > If pos > 0 Then > myDocname = Left(myDocname, pos -1) > myDocname = myDocname & ".txt" > ActiveDocument.SaveAs FileName:=myDocname, FileFormat:=wdFormatText > End If > > In my Python code I have tried several approaches: > from win32com.client import Dispatch > > Word = Dispatch("Word.Application") > Word.Visible = 1 > > WordDoc = Word.Documents.Open("C:\\test.txt") > WordDoc.SaveAs(FileName='C:\\TextTest2.txt',FileFormat='wdFormatDOSText' > ) WordDoc.Close() > Word.Quit() > > It works fine if I leave the FileFormat argument out. However, when I > add the FileFormat argument as shown above, I get > > Traceback (most recent call last): > File "d:\python20\pythonwin\pywin\framework\scriptutils.py", line 301, > in RunScript > exec codeObject in __main__.__dict__ > File "C:\...\OpenApp.py", line 7, in ? > WordDoc.SaveAs(FileName='C:\\TextTest2.txt',FileFormat='wdFormatDOSText' > ) File > "d:\python20\win32com\gen_py\00020905-0000-0000-C000-000000000046x0x8x1. > py", line 13959, in SaveAs > return self._oleobj_.InvokeTypes(0x66, LCID, 1, (24, 0), ((16396, 17), > (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), > (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, > 17)),FileName, FileFormat, LockComments, Password, AddToRecentFiles, > WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, > SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter) > com_error: (-2147352571, 'Type mismatch.', None, 2) The file format param is an integer. You can get access to all the constants with: >>> import win32com.client >>> w = win32com.client.Dispatch("Word.Application") >>> w <win32com.gen_py.Microsoft Word 9.0 Object Library._Application> >>> win32com.client.constants.wdFormatDOSText 4 >>> Before that will work you need to find the makepy.py script (Python\win32com\client\makepy.py) and run it. From the list choose the Microsoft Word 9 Type library. Then the above code should work and you can use win32com.client.constants.wdFormatDOSText as the parameter you need. Hope this helps, -J
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4