none
Sauvegarder un document word depuis un script powershell RRS feed

  • Question

  • Bonjour à tous, je travaille sur un script powershell actuellement qui chercher tous les .mp3 qui sont sur le disque C: et les liste dans un fichier Word.

    J'ai un problème au moment du morceaux de code : $doc.saveas([ref] $path, [ref]$saveFormat::wdFormatDocument)

    Voici mon code : 

    $word = New-Object -ComObject "Word.Application"
    $word.Visible = $true
    $doc = $word.documents.add()
    
    
    $doc.Paragraphs.item(1).range.text = "Test"
    $doc.Content.InsertParagraphAfter()
    $doc.Paragraphs.item(1).range.font.name= "Californian FB"
    $doc.Paragraphs.item(1).range.font.size= "25"
    $doc.Paragraphs.item(1).Alignment = 1
    $doc.Paragraphs.item(2).range.font.name= "Calibri"
    $doc.Paragraphs.item(2).range.font.size= "11"
    $ofs="`r`n"
    [ref]$SaveFormat = "microsoft.office.interop.word.WdSaveFormat" -as [type]
    $path = "$env:USERPROFILE\Dekstop\test.docx"
    
    
    $ext = "mp3"
    $repMusique = "$env:USERPROFILE\\"
    $Files = Get-ChildItem $repMusique -Filter "*.$ext" -Recurse
    $i = 2
    foreach($file in $Files){
            $doc.Paragraphs.item($i).range.text = "$file + $ofs "
            $i = $i+1
          }
    $doc.saveas([ref] $path, [ref]$saveFormat::wdFormatDocument)
    $doc.Close()
    $doc.Quit()


    Et voici l'erreur :

    Exception lors de l'appel de « SaveAs » avec « 2 » argument(s) : « Nom de fichier non valide.
    Essayez les opérations suivantes :
    * Vérifiez votre saisie.
    * Sélectionnez un fichier dans la liste des dossiers et fichiers. »
    Au caractère P:\LOGUS\2014-2015\122\Projet\genererWord.ps1:26 : 1
    + $doc.saveas([ref] $path, [ref]$saveFormat::wdFormatDocument)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : COMException

    Merci de votre aide !

    jeudi 5 mars 2015 13:36

Toutes les réponses

  • Bonjour,

    Après avoir cherché sur la syntaxe PS, finalement il apparait que le problème est bien plus simple qu'il n'y parait... Il suffit de lire le message d'erreur ;)

    La syntaxe est bonne, par contre, dans votre définition du $path, il y a une coquille:

    $path = "$env:USERPROFILE\Dekstop\test.docx"

    Hé oui, il s'agit de Desktop....

    A la fin de votre script, vous pouvez aussi changer le $doc.Quit() en $word.Quit().

    En espèrant que vous ayez trouvé tout seul, sinon au moins ça vous aura fait avancer.

    Bonne journée,


    Laurent Dumont PRESTINFORM - Revel

    mardi 10 mars 2015 13:42