如何使用PowerShell插入Excel公式?

公式=LEFT(AB4,FIND(" ",AB5)-1在Excel中完美工作,但似乎在PowerShell中导致错误,我得到此错误:

来自HRESULT的exception:0x800A03EC
在C:\ Scripts \ Excel_NUID2.ps1:21 char:1
 + $ worksheet.range(“AH5:AH $ rows”)。formula =“= LEFT(AB4,FIND(”“,AB5)-1”
 +〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 ~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo:OperationStopped:(:) [],COMException
 + FullyQualifiedErrorId:System.Runtime.InteropServices.COMException 

我的PowerShell脚本代码;

 #Open Up the Workbook# $excel = new-object -comobject Excel.Application $excel.visible = $false $workbook = $excel.workbooks.open("c:\Users\Jack\documents\NUID_Status_Report.xlsx") $worksheet = $workbook.Worksheets.Item(1) $rows = $worksheet.range("A1").currentregion.rows.count ### Set up a filter ### $headerRange = $worksheet.Range("a4","aj4") $headerRange.AutoFilter() | Out-Null #### Trims Password Expiration Date Name ### $worksheet.range("AH4").formula = "Shortened Expiration Date" [void]$worksheet.Cells.Item(1,1).select() $excel.visible = $true #### Trims Password Expiration Date Formula ### $worksheet.range("AH5:AH$rows").formula = "=LEFT(AB4,FIND(" ",AB5)-1" [void]$worksheet.Cells.Item(1,1).select() $excel.visible = $true 

引用string中的引号需要加倍。

 $worksheet.range("AH5:AH$rows").formula = "=LEFT(AB4,FIND("" "",AB5)-1)" 'you can also get rid of the inside quotes with the CHAR function $worksheet.range("AH5:AH$rows").formula = "=LEFT(AB4, FIND(CHAR(32), AB5)-1)" 

ASCII字符32是一个空格。 我还添加了一个括号来制定一个合法的公式。