我尝试了几种在这里看到的方法来使它起作用,但没有成功。多数人说使用.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
感谢您的帮助。谢谢。
答案 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'
有用的提醒:)