löschen Arbeitsblatt aus .xlsm Datei

Ich versuche zum löschen eines benannten Arbeitsblatts aus einer .xlsm Datei.

Folgte ich dem Beispiel gepostet hier aber es ist nicht für mich arbeiten. Wenn ich öffnen Sie die .xlsm Datei, um zu prüfen, ob das Arbeitsblatt gelöscht wurde, ist es immer noch da.

Hier ist mein code:

$file2 = 'c:\file.xlsm' # destination's fullpath

$xl = new-object -c excel.application
$xl.displayAlerts = $false # don't prompt the user

$wb2 = $xl.workbooks.open($file2) # open target

$sh2_wb2 = $wb2.sheets | where {$_.name -eq "myWorksheet"}
$sh2_wb2.delete() #Delete original sheet in template

$wb2.close($true) # close and save destination workbook
$xl.quit()
spps -n excel

Was mache ich falsch?

Edit:

Änderte ich meinen code, um das Excel-Objekt sichtbar, wenn es zu öffnen. Dann bemerkte ich, dass die delete - Ruf gesendet wird, aber es ist den Benutzer auffordert, zu bestätigen, ob das löschen passieren soll: Data may exist in the sheet(s) selected for deletion. To permanently delete the data, press Delete.

Dann versuchte ich noch ein paar mehr displayAlerts = $false in meinem code, aber es ist immer noch dass Sie mich auffordern.

Hier ist meine aktuelle code, obwohl es immer noch nicht funktioniert.

$file2 = 'c:\file.xlsm' # destination's fullpath

$xl = new-object -com excel.application -Property @{Visible = $true}
$xl.displayAlerts = $false # don't prompt the user

$wb2 = $xl.workbooks.open($file2) # open target
$wb2.displayAlerts = $false # don't prompt the user

$sh2_wb2 = $wb2.sheets | where {$_.name -eq "myWorksheet"}
$sh2_wb2.displayAlerts = $false # don't prompt the user
$sh2_wb2.delete() #Delete original sheet in template

$wb2.close($true) # close and save destination workbook
$xl.quit()
spps -n excel
  • Ihr code funktioniert. Hast du die Rechte zum ausführen? stackoverflow.com/questions/4037939/... Auch Sie müssen mindestens 1 sichtbaren Platte, so dass, wenn myWorksheet ist der einzige, der sichtbar ist, werden Sie Fehler.
  • Sie setzen mich auf die richtige Spur - bitte siehe mein edit.
  • Aus dem ursprünglichen code, wenn es Daten, die auf myWorksheet, und ich displayAlerts auf $true festgelegt wird, wird das Blatt nicht gelöscht. Wenn displayAlerts auf $false festgelegt ist, wird das Blatt löscht, ohne Frage. Dies ist in Excel 2010 habe ich die Prüfung in.
  • Ich bin auch Tests in Excel 2010. Mein original-code wurde eingestellt, um displayAlerts = $false und es ist noch immer fordert mich auf, löschen Sie das Arbeitsblatt, selbst wenn es keine Daten enthält.
  • Ist Ihre Datei wirklich in das Stammverzeichnis von C:\? Sie benötigen erhöhte Rechte, bla, bla, speichern es. Meine Prüfung wurde durchgeführt in einer zulässigen Ordner.
  • Nein, es ist eine persönliche dir, dass ich admin-Rechte zu.
  • Versuchen Sie, löschen Sie das Letzte Arbeitsblatt in der Arbeitsmappe? Ich versuchte dies mit Powershell und das Arbeitsblatt nicht gelöscht. Aber hinzufügen ein 2. Arbeitsblatt, ich war in der Lage, löschen Sie die namens-Arbeitsblatt Sheet1 mithilfe $del = $xlsWb.Sheets | where {$_.Name -eq 'Sheet1'} dann $del.delete()

InformationsquelleAutor sion_corn | 2014-02-10
Schreibe einen Kommentar