2013-02-21 8 views
0

Microsoft.Office.Interop.Word.WdSaveFormat을 사용하여 Word에서 일련의 html 파일을 반복적으로 열고 Word 및 Text를 각각 wdFormatDocumentwdFormatDOSText 매개 변수를 사용하여 저장하는 Powershell (2.0) 스크립트가 있습니다. 스크립트에는 각 문서 유형에 대한 별도의 기능이 있습니다.Powershell : 가질 수있는 출력 파일 형식의 수에는 제한이 있습니까?

어제는 요구 사항이 변경되어 이제 RTF 문서도 출력해야합니다. 나는 $saveFormatRTF 변수

$saveFormatDoc = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatDocument"); 
$saveFormatTxt = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatDOSText"); 
$saveFormatRTF = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatRTF"); 

를 추가하고 다음과 같은 오류가 있어요.

Unable to find type [Microsoft.Office.Interop.Word.WdSaveFormat]: make sure that the assembly containing this type is l 
oaded. 
At C:\users\x46332\Desktop\cgc\CGC002.PS1:68 char:76 
+ $saveFormatDoc = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat] <<<< , "wdFormatDocument"); 
    + CategoryInfo   : InvalidOperation: (Microsoft.Offic...rd.WdSaveFormat:String) [], RuntimeException 
    + FullyQualifiedErrorId : TypeNotFound 

Unable to find type [Microsoft.Office.Interop.Word.WdSaveFormat]: make sure that the assembly containing this type is l 
oaded. 
At C:\users\x46332\Desktop\cgc\CGC002.PS1:69 char:76 
+ $saveFormatTxt = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat] <<<< , "wdFormatDOSText"); 
    + CategoryInfo   : InvalidOperation: (Microsoft.Offic...rd.WdSaveFormat:String) [], RuntimeException 
    + FullyQualifiedErrorId : TypeNotFound 

Unable to find type [Microsoft.Office.Interop.Word.WdSaveFormat]: make sure that the assembly containing this type is l 
oaded. 
At C:\users\x46332\Desktop\cgc\CGC002.PS1:70 char:76 
+ $saveFormatRTF = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat] <<<< , "wdFormatRTF"); 
    + CategoryInfo   : InvalidOperation: (Microsoft.Offic...rd.WdSaveFormat:String) [], RuntimeException 
    + FullyQualifiedErrorId : TypeNotFound 

Word 및 텍스트로 변환하는 스크립트를 실행하면 정상적으로 작동합니다. RTF를 단독으로 실행하면됩니다. 그러나 스크립트에서 RTF를 다른 출력 형식과 결합 할 때마다 스크립트에서 참조되는 모든 출력 형식이 "찾을 수 없음"으로 표시됩니다. RTF를 자체적으로 내보낼 필요가 있습니까? 하나의 스크립트에서 몇개의 출력 파일 타입을 가질 수 있는지에 대한 제한이 있습니까? 설정하지 않은 매개 변수가 있습니까?

출력이 정확하고 MSDN의 단서를 스캔했지만이 동작을 일으킬 수있는 항목, 특히 RTF를 믹스에 추가 할 때 예기치 않은 결과를 찾을 수 없습니다. 어떤 아이디어?

+0

새로운 Powershell 2 세션을 시작하면'[System.Reflection.Assembly] :: LoadWithPartialName ("Microsoft.Office.Interop.Word")'을 실행 한 다음 3 줄의 코드를 복사하여 붙여 넣으십시오. 공장. 모두 개별적으로 잘 작동합니다. 죄송합니다. 어떤 식 으로든 재현 할 수 없습니다. 나를 위해, 그것은'C : \ Windows \ assembly \ GAC_MSIL \ Microsoft.Office.Interop.Word \ 14.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Word.dll'을 사용합니다. – Joost

답변

0

몇 가지 추가 테스트를했는데 며칠 후 예상대로 예상대로 변환 할 수있었습니다. 나는 또한 하나의 스크립트로 모든 형식 listed here으로 변환을 테스트했다 ... 그리고 특수 문자에 대한 펑키 한 출력 포맷을 제외하면 모든 것이 훌륭하게 작동했다.

그래서 제한이 없다고 추측하고 있습니다. 테스트에서이 이론을 설명하는 것 같습니다.