这是我的第一个StackOverflow问题,但我会尽量考虑社区标准。
我在Win7 Pro上运行Office 2013和PoSh v4.0。在执行下面的脚本时,我会收到以下错误提示:"Method invocation failed because [System.__ComObject] does not contain a method named 'Close'."
根据呈现最短代码以重现错误的标准,我从一个更大的自动化代码中开发了上述代码。与此同时,Powershell 4.0 和 Excel 2013 | Bug | Work-a-round 看起来是在讨论同样的问题。我按照XXInvidiaXX提供的线程 / 文化解决方案,但仍然生成了相同的错误。Problems with Excel automation in PowerShell 中Roy给出了一个指向时间错误的答案,但我插入了一个Sleep命令并尝试分别运行打开和关闭命令,但两者都无效。非常感谢任何帮助,特别是基础理论。
我在Win7 Pro上运行Office 2013和PoSh v4.0。在执行下面的脚本时,我会收到以下错误提示:"Method invocation failed because [System.__ComObject] does not contain a method named 'Close'."
$xl = New-Object -comobject Excel.Application
$xl.Visible = $false
$xl.DisplayAlerts = $false
$filepath = "C:\Users\rysullivan\Desktop\Projects\EDCautomation\attach\"
$wb1 = $xl.Workbooks.Open((Join-Path $filepath "Ryan Sullivan-Template.xlsx"))
sleep 5
$wb1.Close()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($xl)
根据呈现最短代码以重现错误的标准,我从一个更大的自动化代码中开发了上述代码。与此同时,Powershell 4.0 和 Excel 2013 | Bug | Work-a-round 看起来是在讨论同样的问题。我按照XXInvidiaXX提供的线程 / 文化解决方案,但仍然生成了相同的错误。Problems with Excel automation in PowerShell 中Roy给出了一个指向时间错误的答案,但我插入了一个Sleep命令并尝试分别运行打开和关闭命令,但两者都无效。非常感谢任何帮助,特别是基础理论。
$wb1.close()
吗? - Dane Boulton$env:USERPROFILE
,并成功运行了脚本。这可能与你的工作簿有关,文件中可能存在一些奇怪的问题。也许关闭PS或重新启动计算机再试一次,以确保没有什么卡在内存中? - TheMadTechnician$wb1.Close($false)
或$wb1.Close($false,$null,$false)
。 - Mathias R. Jessen