从HRESULTexception:0x800A03EC设置单元格的值(通过Powershell)

我想通过PowerShell设置一个Excel单元格的值,我得到错误HRESULT:0x800A03EC,它过早地结束脚本。 我意识到还有其他问题与这个错误或类似的,但没有解决scheme已经为我工作,所以我认为这是一个单独的问题。

我已经运行我的脚本,但现在只给我这个错误。

相关代码:

$Output_Location = "Z:\Documents\Powershell" $Excel_File = "Report.xlsx" $ExcelWorkBook = $Excel.Workbooks.open("$Output_Location\$Excel_File") $MainSheet = $ExcelWorkBook.worksheets.Item("Report") $Sheet1 = $ExcelWorkBook.worksheets.Item("Sheet1") $Sheet1.name = "Statistics" $StatisticsSheet = $ExcelWorkBook.worksheets.Item("Statistics") $row = 3 $column = 2 $StatisticsSheet.Cells.Item(2,2)= 'KeyToMatch' $StatisticsSheet.Cells.Item($row,$column) = '=COUNTIFS(Report!E2:E200000,B$3,Report!G2:G200000,"UserMailbox")' $row++ $StatisticsSheet.Cells.Item($row,$column) = '=COUNTIFS(Report!E2:E200000,B$3,Report!G2:G200000,"RemoteUserMailbox")' $row++ 

该代码加载Excel文件,并击中将单元格(2,2)/(B,2)设置为其值的行就好了。 但是当代码碰到设置单元格行的KeyToMatch(B,3)下面的行时,会抛出错误0x800A03EC。

完整的错误:

 Exception from HRESULT: 0x800A03EC At Z:\Documents\Powershell\Reporting\Report.ps1:113 char:1 + $StatisticsSheet.Cells.Item($row,$column).value = '=COUNTIFS(Report! ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException 

我试着把单元格和值之间的'='隔开,我也尝试了以下内容:

 $StatisticsSheet.Cells.Item($row,$column).value = ... $StatisticsSheet.Cells.Item($row,$column).value2 = ... $StatisticsSheet.Cells.Item($row,$column).text = ... $StatisticsSheet.Cells.Item($row,$column).formula = ... 

我可以注释掉任何将单元格的值设置为公式的行数,第一个尝试这样做的行会抛出上述错误。

就像我说过的,我之前运行过这个脚本,但现在只是给了我麻烦。 我怎样才能解决这个问题,使代码运行顺利?

从问题移动解决scheme:

parsing度:

为了解决这个问题,在我分配给单元格的文本中,我用双引号replace了单引号,因此,不得不转义“$”和“”“字符。每次在文本中出现数据的表名称)。

它最终看起来像这样,运行良好:

 $StatisticsSheet.Cells.Item($row,$column) = "=COUNTIFS('Report'!E2:E200000,B`$3,'Report'!G2:G200000,`"UserMailbox`")" 

仍然不知道为什么发生这个错误 – 代码已经每周在这之前工作! 在更改脚本和查找分辨率之前,我在多台机器(5+)上testing了它,并且每次都抛出标题中提到的错误。