2

同じファイルに対して Powershell スクリプトを 2 回実行しようとすると、[名前の競合] ダイアログ ボックスが表示されます。このエラーは、ファイルの自動フィルタリングに関係していることを知っています。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)
4

3 に答える 3

4

この名前は 1 回しか使用できないため、名前「_FilterDatabase」を削除する必要があります。

Names オブジェクトは hastable です。したがって、次のようにキーを削除する必要があります。

$workbook.Names.Item("_FilterDatabase").Delete()

于 2013-02-01T13:47:18.400 に答える
0

また、後に次のようなことを行うと便利な場合があります$workbook.Names.Item("_FilterDatabase").Delete()

$Items_FD = $workbook.Names | ?{ $_.Name -match "_FilterDatabase" }
$Items_FD | %{
  try{
    $_.Delete() | Out-Null
  }
  catch{}
}
于 2015-04-14T09:57:25.857 に答える