Sauvegarde fichier [Résolu/Fermé]

Signaler
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
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

Messages postés
5578
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 juin 2021
937
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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.
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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.
Messages postés
5578
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 juin 2021
937
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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 !