Sauvegarde fichier

Résolu
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   -  
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   -
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.

A voir également:

3 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Membre Dernière intervention   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.
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   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.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Membre Dernière intervention   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 !
0