【问题标题】:Unable to run this script for second time无法第二次运行此脚本
【发布时间】:2018-07-05 12:21:44
【问题描述】:

我将 OGN.xlsx 文件保存为 jeeva.csv。以下代码首次运行并创建 jeeva.csv。

PS C:\Users\Jeevananda_R> $objExcel=New-Object -ComObject Excel.Application
PS C:\Users\Jeevananda_R> $workbook=$objExcel.Workbooks.Open('D:\OGN.xlsx')
PS C:\Users\Jeevananda_R> $workbook.SaveAs('D:\jeeva.csv',6)

已创建文件 jeeva.csv

当我再次运行时:

PS C:\Users\Jeevananda_R> $objExcel=New-Object -ComObject Excel.Application
PS C:\Users\Jeevananda_R> $workbook=$objExcel.Workbooks.Open('D:\OGNPL300.xlsx')
PS C:\Users\Jeevananda_R> $workbook.SaveAs('D:\jeeva.csv',6)

我收到此错误:

使用“2”参数调用“SaveAs”时出现异常:“无法访问 'jeeva.csv'。” 在行:1 字符:1 + $workbook.SaveAs('D:\jeeva.csv',6) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation

【问题讨论】:

  • 编辑 rerun 中的第二个命令,这就是运行 PS C:\Users\Jeevananda_R> $workbook=$objExcel.Workbooks.Open('D:\OGN.xlsx')
  • 保存工作簿并不意味着您关闭了它。
  • 如何关闭该文件?
  • 我做了这个 $workbook.Close() 还是一样
  • Excel 就是这么有趣。看看stackoverflow.com/questions/27798567/…

标签: powershell


【解决方案1】:

这对我有用

$objExcel=New-Object -ComObject Excel.Application
$objExcel.displayAlerts = $false
$workbook=$objExcel.Workbooks.Open('C:\test\test.xlsx')
$workbook.SaveAs('c:\test\new.csv',6) 
$workbook.close
[void]$objExcel.Quit()

【讨论】:

  • 你能重新运行同样的前三个命令吗,因为我复制粘贴你的代码得到同样的错误,第一次运行但第二次失败并出现同样的错误
  • 如果在控制台或 ISE 中运行上述内容,我不会收到任何错误
  • Windows powershell ,在 windows 搜索中我搜索了 powershell 并出现了提示。赢 8.1 32 位
  • 先尝试结束所有的excel prossess,然后再尝试我发布的代码(编辑文件路径)
  • 我也建议在退出Excel后释放Excel com对象:[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) | Out-Null ; [System.GC]::Collect() ; [System.GC]::WaitForPendingFinalizers()
猜你喜欢
  • 1970-01-01
  • 2020-02-04
  • 2018-07-12
  • 2021-01-15
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
相关资源
最近更新 更多