WebHU - Programozási kérdések és válaszok

PowerShell – Több Word-dokumentum feldolgozása (Office 2010)

Megpróbálok PowerShell-szkriptet írni, hogy lépéseket tegyek több Word dokumentumon. A Word 2010 telepítve van a gépemen, de úgy tűnik, nem tudom elérni a szkriptet a dokumentumok megnyitásához. Íme a forgatókönyv

    $path = "C:\MyPath" 
    Add-Type -AssemblyName Microsoft.Office.Interop.Word  
    $wordFiles = Get-ChildItem -Path $path -include *.doc, *.docx -recurse 
    $objWord = New-Object -ComObject "word.application"
    $objWord.visible = $false 
    foreach($wd in $wordFiles) 
    { 
    $doc = $objWord.documents.open($wd.fullname) 
    #InsertProcessingFunctionsHere 
    $doc.Save() 
    $objWord.Documents.Close() 
    } 
    $objWord.Quit()

Megpróbálom ezt futtatni, és a PowerShelltől kapott hiba a következő:

    Exception calling "Open" with "1" argument(s): "Command failed"
    At C:\Scripts\Process-WordDocs.ps1:10 char:31
    + $doc = $objWord.documents.open <<<< ($wd.fullname)
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ComMethodTargetInvocation

    You cannot call a method on a null-valued expression.
    At C:\Scripts\Process-WordDocs.ps1:13 char:10
    + $doc.Save <<<< ()
        + CategoryInfo          : InvalidOperation: (Save:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    Exception calling "Close" with "0" argument(s): "This method or property is not available because a document window is not active."
    At C:\Scripts\Process-WordDocs.ps1:14 char:25
    + $objWord.Documents.Close <<<< ()
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ComMethodTargetInvocation

Az MSDN szerint a document.open csak 1 argumentumot igényel, a többi opcionális. Azonban egy C# példa, amit a neten láttam, azt mutatta, hogy egy "ReadOnly: False" paramétert adtak át a document.open-nek. Átlépve a szkriptet az ISE Debuggerben, látom, hogy a $wd.fullname ott van, és egy érvényes fájlra mutat, így teljesen érthetetlen, hogy miért nem nyílik meg. Először azt hittem, hogy ez azért van, mert az operációs rendszer 64 bites verzióját (az Office 32 bites verzióját) használom, de a 32 bites PowerShell-munkamenetből származó parancsfájl próbálkozása ugyanazt a hibát eredményezte. Van valakinek rálátása arra, hogy ez miért fordulhat elő, és hogyan tudnám orvosolni? Azt szeretném, ha az összes feldolgozás láthatatlanul történne a felhasználó számára. Minden segítséget nagyon szívesen vennénk. Előre is köszönöm az idejét.


  • Az a furcsa, hogy ezt egy 64 bites gépen tesztelik, amelyen Office 2007 volt telepítve, a szkript működik. Szóval úgy tűnik, ez valami 2010-re jellemző. Remélem, valaki más is belefutott ebbe. 19.07.2012

Válaszok:


1

Szerintem a $objWord.Documents.Close() helyett a $doc.close() használatával szeretné bezárni a dokumentumot

02.11.2012
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..