名称与_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{} }