我正在開發一個項目,我需要將幾千個文檔從HTML轉換爲Word。我使用此功能工作:如何在Powershell中強制執行文件操作?
function saveas-document ($docs) {
$opendoc = $word.documents.open($docs);
$savepath = $docs -replace [regex]::escape($htmPath),"$docpath"
$opendoc.saveas([ref]"$savepath", [ref]$saveFormat);
$opendoc.close();
}
近日,在測試時,我的工作停滯不前,因爲文件之一是「另一用戶」鎖定。我收到一個對話框詢問我是否需要閱讀ony副本,如果稍後要編輯和合並更改,或者等待文檔再次可用的通知。另外,在我選擇打開文件的任何情況下,似乎都會覆蓋我的$word.Visible-$False
參數。
我一直沒有成功識別這個鎖定我的文檔的「另一個用戶」。所有文件都在本地,非共享驅動器上,所以我不確定它們是否被鎖定。根據文件所在的位置,我確信沒有什麼需要編輯的,我可以強制文件打開,然後Save As...
我可以使用-force
作爲此函數中的參數嗎?放置該參數的最佳位置在哪裏?
編輯:根據下面的JPBlanc,我試着停止Word,每個記錄有三個錯誤。
Method invocation failed because [Microsoft.Office.Interop.Word.DocumentClass] doesn't contain a method named 'quit'.
At C:\users\x46332\desktop\sad003.ps1:69 char:18
+ $opendoc.quit <<<<()
+ CategoryInfo : InvalidOperation: (quit:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Exception calling "SaveAs" with "16" argument(s): "COM object that has been separated from its underlying RCW cannot be
used."
At C:\users\x46332\desktop\sad003.ps1:73 char:20
+ $opendoc.saveas <<<< ([ref]"$savepath", [ref]$saveFormat);
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Exception calling "Close" with "3" argument(s): "COM object that has been separated from its underlying RCW cannot be u
sed."
At C:\users\x46332\desktop\sad003.ps1:74 char:19
+ $opendoc.close <<<<();
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
沒有工作... :(見我的編輯以上.... – dwwilson66
對不起,對我的作品在生產 – JPBlanc
廢話OK,我會繼續挖掘。。不管怎麼說,還是要謝謝你。 – dwwilson66