2011-05-06 3 views
1

Je manipulais Word depuis C# et maintenant je le testais avec IronPython. Voici mon code:Appelez la méthode Word.SaveAs de IronPython

import clr 

clr.AddReference('System') 
clr.AddReference('mscorlib') 
clr.AddReference('Microsoft.Office.Interop.Word') 
from System.Reflection import Missing 
from Microsoft.Office.Interop.Word import ApplicationClass 

missing = Missing.Value 

word = ApplicationClass() 
word.Visible = True 
doc = word.Documents.Add(missing, missing, missing, missing) 

doc_file_name = r"C:\MyWord.docx" 
doc.SaveAs(doc_file_name, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing) 
doc.Close(missing, missing, missing) 
WordApp.Quit(missing, missing, missing) 

La ligne à l'appel SaveAs provoque une erreur: ValueError: Impossible de convertir l'argument 0 pour appel à SaveAs.

Quelqu'un at-il rencontrer le même problème ou une solution?

Répondre

1

Je pense que le problème est lié à la valeur du type de fichier et si votre instance de mot est en mode de compatibilité ou non.

J'ai fait ces changements et cela s'est bien passé.

doc_file_name = r"C:\MyWord.doc" 
doc.SaveAs(doc_file_name) 

Ce changement bombardées.

doc_file_name = r"C:\MyWord.docx" 
doc.SaveAs(doc_file_name) 
+0

Merci beaucoup, cela fonctionne. Mais savez-vous pourquoi je ne peux pas utiliser la méthode SaveAs avec tous les arguments? – Nicolas

+0

Seulement si vous avez des valeurs réelles. J'ai trouvé (à partir de vba) qu'il est préférable de ne spécifier que ce dont vous avez besoin et de laisser l'objet gérer les valeurs par défaut. – WombatPM

Questions connexes