使用PowerShell将公式添加到Excel单元格时出现异常

时间:2018-08-29 00:56:01

标签: excel powershell

我尝试了几种在这里看到的方法来使它起作用,但没有成功。多数人说使用.formula或转义字符。我可以将常规数据添加到单元格,但不能添加公式。我知道它可以在Powershell之外使用。

以下是这行:

$WS.Cells.Item(6,4).formula = "='C:\Users\JG\Desktop\Reference\Financial\Test\[$MNE.xlsx]$MNE'!$O$28"

错误:

  

HRESULT的异常:0x800A03EC在   C:\ Users \ JG \ Desktop \ Reference \ Test \ Test2.ps1:47 char:1   + $ WS.Cells.Item(6,4).formula =“ ='C:\ Users \ JG \ Desktop \ Reference \ ...   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~   + CategoryInfo:OperationStopped:(:) [],COMException   + FullyQualifiedErrorId:System.Runtime.InteropServices.COMException

感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:4)

您需要使用反引号$对公式中的`进行转义,否则$MNE$O$28被解释为变量,而没有值。然后公式将变为='C:\Users\JG\Desktop\Reference\Financial\Test\[.xlsx]'!,这是无效的。

您的公式应为:

"='C:\Users\JG\Desktop\Reference\Financial\Test\[`$MNE.xlsx]`$MNE'!`$O`$28"

答案 1 :(得分:2)

另一种解决方案是交换报价。 PowerShell中的双引号是普通字符串,变量在最终解释时将被扩展。 PowerShell中的单引号是文字字符串,其中不能进行变量扩展。

例如,以下$ World将被解释为变量,PowerShell将尝试将其替换为$ World变量

 > Write-Output "Hello $World"
Hello

用单引号替换双引号将停止变量扩展

> Write-Output 'Hello $World'
Hello $World

要将其应用于您的问题,您只需翻转报价单

$WS.Cells.Item(6,4).formula = '="C:\Users\JG\Desktop\Reference\Financial\Test\[$MNE.xlsx]$MNE"!$O$28'

有用的提醒:)