【发布时间】:2015-05-31 01:59:54
【问题描述】:
这是我的第一个 StackOverflow 问题,但我会尽量牢记社区标准..
我在 Win7 Pro 和 PoSh v4.0 上运行 Office 2013。在执行后续脚本时,我收到以下错误:“方法调用失败,因为 [System.__ComObject] 不包含名为 '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 and Excel 2013 | Bug | Work-a-round 似乎在同一点上。我遵循了 XXInvidiaXX 提供的线程/文化解决方案,并且产生了相同的错误。
Problems with Excel automation in PowerShell 得到 Roy 的回答,指出时间错误,但我插入了睡眠命令并尝试分别运行打开和关闭命令,但均无济于事。
非常感谢任何帮助,尤其是基础理论。
【问题讨论】:
-
会不会是
$wb1.close()? -
Dane,感谢您这么快就回来。我最初有 $wb1.Close() 并且正在测试。我忘记改回来了。我已经更新了标题/问题。
-
我使用的是 Win8.1 而不是 Win7,但我无法复制该错误。我在桌面上创建了“Projects\EDCautomation\attach”路径,在该位置创建了一个名为“Ryan Sullican-Template.xlsx”的空白工作簿,将路径字符串的开头更改为
$env:USERPROFILE,然后运行脚本没有问题.这可能是与您文件中奇怪的东西相关的工作簿吗?也许关闭 PS 或重新启动并重试以确保它没有卡在内存中? -
All examples on MSDN 至少指定第一个可选参数。也许试试
$wb1.Close($false)或$wb1.Close($false,$null,$false) -
@MathiasR.Jessen - 谢谢,$wb1.Close($false) 似乎对我有用。感谢您的帮助!
标签: powershell scripting powershell-4.0