Les conflits de noms avec _FilterDatabase
Que je suis un "Nom de conflits" de la boîte de dialogue après j'essaie de faire fonctionner mon script Powershell la deuxième fois sur le même fichier. Je sais que cette erreur a quelque chose à faire avec moi le filtrage automatique du fichier. Si je ne l'utilise jamais autofiter, puis la boîte de dialogue de ne pas s'afficher. Ce que je fais mal? Voici le code:
$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)
$excel.Range("D:D").AutoFilter(1, $from, 1, $to) > $null
Pas travaillé avec powershell, mais ne devrait-ce pas être$SomeWorksheet.Range("D:D").AutoFilter(1, $from, 1, $to) > $null
- Il n'a pas d'importance. J'ai mis à jour la question avec une approche différente qui mène au même problème...
- Voir si cette aide? Exécuter le code de l'Éditeur VBA dans Excel dans
testtabelle1.xlsx
et puis enregistrez le fichier social.msdn.microsoft.com/Forums/en/exceldev/thread/... - Ne vous obtenez le message d'erreur si, avant d'exécuter le script pour la 2e fois que vous fermez et rouvrez powershell?
- Oui, j'ai toujours l'erreur...
- Il fonctionne en partie. Je ne suis pas autorisé à retirer le filtre. Ce que j'essaie toutefois, est de supprimer le _FilterDatbase Nom.
Vous devez vous connecter pour publier un commentaire.
Vous devez supprimer le Nom de "_FilterDatabase", car ce nom est possible qu'une seule fois.
Les Noms de l'objet est une hastable. Par conséquent, vous Devez supprimer la clé comme ceci:
$workbook.Names.Item("_FilterDatabase").Delete()
$excel.Workbooks.Open()
méthode afin$workbook
n'existe même pas jusqu'à ce point. Aussi, je ne le fais pas tout de filtrage dans mon script donc je n'ai aucune idée de pourquoi cela se produitIl peut aussi être utile de faire quelque chose comme ceci après
$workbook.Names.Item("_FilterDatabase").Delete()
: