2

过去,如果我们想在后台运行office 2003、2007应用程序,我们可以将“Visible”属性的值设置为$False。但是我们不能在 office 2010 中执行相同的操作,如果我将值设置为 $fasle 或“msoFalse”,它会收到错误消息,例如:

============================

异常设置“可见”:“应用程序(未知成员):无效请求。隐藏应用程序窗口不是

允许。”

在行:1 字符:1

  • $app.Visible="msoFalse"

或者

异常设置“可见”:“无法将值“False”转换为类型“Microsoft.Office.Core.MsoTriState”。错误:

“从 'System.Boolean' 到 'Microsoft.Office.Core.MsoTriState' 的无效转换。”

==============================

如果我将“Visible”的值设置为“msoTrue”,它可以正常工作并且不会发生错误。

有没有人有任何想法会导致这种情况?以及如何使office 2010应用程序在后台运行?

顺便说一句,我对 word 使用相同的操作,excel 2010 不会发生错误,并且效果很好。但仅在 powerpoint 2010 上运行时,我收到了错误消息。

4

3 回答 3

1

我可以对 office 2010 做同样的事情。例如,显示和隐藏 Word:

$word = New-Object -ComObject Word.Application
$word.Visible=$true
$word.Visible=$false
于 2012-06-12T07:34:34.880 回答
1

CB。是正确的,因为您可以使用 MsoTriState,但它的选项在 powershell 绑定中并不那么明显。您可以查看 Open 命令的定义:

PS C:\Users\jidar\Documents> $doc.Presentations.Open

OverloadDefinitions
-------------------
Presentation Open (string, MsoTriState, MsoTriState, MsoTriState)

尝试遵循上述定义,我能够使用以下内容:

$doc.Presentations.Open($item, [Microsoft.Office.Core.MsoTriState]::msoFalse, [Microsoft.Office.Core.MsoTriState]::msoFalse, [Microsoft.Office.Core.MsoTriState]::msoFalse)

我没有深入研究需要或不需要哪个 msoFalse,因此可能需要进行一些验证。

编辑:忘了提,这是在 Office 2016 上测试过的(其他版本为 YMMV)

于 2017-01-06T18:41:26.557 回答
0

只需使用MsoTriState 枚举器

$app.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue

或者

$app.visible = [Microsoft.Office.Core.MsoTriState]::msoFalse
于 2012-06-12T04:44:33.660 回答