Powershell Невозможно найти тип [Microsoft.Office.Interop.Word.WdSaveFormat] - PullRequest
0 голосов
/ 06 ноября 2018

Я использую этот скрипт для преобразования DOC в HTML

param([string]$docpath,[string]$htmlpath = $docpath)

$srcfiles = Get-ChildItem $docPath -filter "*.doc"
$saveFormat = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatFilteredHTML");
$word = new-object -comobject word.application
$word.Visible = $False

function saveas-filteredhtml
{
    $opendoc = $word.documents.open($doc.FullName);
    $opendoc.saveas([ref]"$htmlpath\$doc.fullname.html", [ref]$saveFormat);
    $opendoc.close();
}

ForEach ($doc in $srcfiles)
{
    Write-Host "Processing :" $doc.FullName
    saveas-filteredhtml
    $doc = $null
}

$word.quit();

К сожалению, когда я запускаю его впервые в консоли ISE, я получаю эту ошибку

Unable to find type [Microsoft.Office.Interop.Word.WdSaveFormat].
In F:\PS\NEW\main.ps1:108 car:29
+ ...  = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFor ...
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (Microsoft.Offic...rd.WdSaveFormat:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound

Хотя, если я снова запускаю его с той же консоли, он работает нормально.

Как мне решить проблему? Спасибо

1 Ответ

0 голосов
/ 28 марта 2019

На этом форуме решают проблему: https://gallery.technet.microsoft.com/office/6f7eee4b-1f42-499e-ae59-1aceb26100de/view/Discussions

Вы добавляете эти строки в начале вашего кода:

$wdTypes = Add-Type -AssemblyName 'Microsoft.Office.Interop.Word' -Passthru
$wdSaveFormat = $wdTypes | Where {$_.Name -eq "wdSaveFormat"}
	
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...