名称与_FilterDatabase冲突
在我尝试在同一个文件上第二次运行我的Powershell脚本后,出现“名称冲突”对话框。 我知道这个错误与我自动过滤文件有关。 如果我从来不使用autofiter,那么对话框将不会显示。 我究竟做错了什么? 代码如下:
$excel = new-object -comobject excel.application $excel.DisplayAlerts = $false $workbook = $excel.Workbooks.open("testtabelle1.xlsx") Trap {"Worksheet problems..."} $workbook.Worksheets.Item(1) | Out-Null $from = ">0" $to = "<2" $workbook.ActiveSheet.Range("D:D").AutoFilter(1, $from, 1, $to) > $null #Reset Selection and close file #$workbook.ActiveSheet.Range("A1").Select() | Out-Null $workbook.Save() $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
你必须删除名称“_FilterDatabase”,因为这个名字只允许一次。
Names对象是一个可信的对象。 所以你需要删除这样的键:
$workbook.Names.Item("_FilterDatabase").Delete()
也可以在$workbook.Names.Item("_FilterDatabase").Delete()
之后做这样的事情$workbook.Names.Item("_FilterDatabase").Delete()
:
$Items_FD = $workbook.Names | ?{ $_.Name -match "_FilterDatabase" } $Items_FD | %{ try{ $_.Delete() | Out-Null } catch{} }