Sauvegarde fichier

Résolu/Fermé
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 27 févr. 2013 à 15:01
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 28 févr. 2013 à 10:38
Bonjour,

J'aimerai pouvoir sauvegarder un document au format Word dans un script perl.
Cependant je me retrouve face à cette erreur :

Bareword "wdFormatDocument" not allowed while "strict subs" in use at C:\doc.pl line 59.
Execution of C:\doc.pl aborted due to compilation errors.


Voici mon code :

my $word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application','Quit') or die Win32::OLE->LastError();
			my $document = $word->Documents->Open("$Path/$FileFound") or die Win32::OLE->LastError();
			# $word->PageSetup->{Orientation} = wdOrientLandscape;
			$word->ActiveDocument->SaveAs(FileName => "$Path/bis$FileFound", FileFormat => wdFormatDocument);


Par avance merci.

3 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
27 févr. 2013 à 15:18
Salut remousse,

Tu cherches visiblement à passer un hash à SaveAs.

Essaye donc en ajoutant des accolades, ainsi :

$word->ActiveDocument->SaveAs( { FileName => "$Path/bis$FileFound", FileFormat => wdFormatDocument } );


Dal
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
27 févr. 2013 à 15:44
Même problème avec les accolades.
J'ai essayé de passer wdFormatDocument avec son équivalent numérique, à savoir 0 et cela fonctionne parfaitement.

Merci de ton aide.
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
27 févr. 2013 à 16:20
Cependant j'ai un nouveau problème.
J'ai plusieurs fichier word que je dois manipuler et lorsque je les ouvre à la main on me demande le format de conversion, qui dans mon cas est MS-DOS.

Or je ne trouve pas cette option en Perl. Existe-t-elle ?

Merci.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 27/02/2013 à 16:44
Win32::OLE est juste un module CPAN permettant d'accéder à l'interface OLE.

Quant à savoir comment on pilote chaque application Windows disposant d'une telle interface, il faut se référer à la documentation de l'application en question, et à la bonne version.

Dans ton cas, cela devrait se trouver là dedans, du moins pour MS Word issu d'Office 2013 :

https://docs.microsoft.com/en-us/office/vba/api/Word.WdSaveFormat

wdFormatDOSText           4 Microsoft DOS text format.

wdFormatDOSTextLineBreaks 5 Microsoft DOS text with line breaks preserved.


Dal
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
28 févr. 2013 à 10:38
Merci beaucoup, c'est justement ce genre d'information qu'il me fallait.
En plus c'est beaucoup plus simple que de passer par le module VB de word !
0