2017-05-17 53 views
2

=LEFT(AB4,FIND(" ",AB5)-1在Excel中的作品完美,但似乎导致在PowerShell中的错误,我得到这个错误的公式:如何使用PowerShell插入Excel公式?

 
Exception from HRESULT: 0x800A03EC 
At 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 
+0

You state'*公式= LEFT(AB4,FIND(“”,AB5)-1在Excel *中完美工作,但这是不正确的;它在某处丢失了一个右括号 – Jeeped

+0

正确,我一定错过了右边应该是= LEFT(AB4,FIND(“”,AB5)-1) – jreyez

回答

1

引用字符串内的引号需要翻倍。

$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是空格。我还添加了一个支架来制定一个合法的公式。

+0

谢谢Jeeped,它看起来像你的解决方案工作! – jreyez