Excel Spalten löschen mit PowerShell
Hallo,
ich suche nach einer Lösung für mein wahrscheinlich einfaches Problem.
ich möchte mit Powershell eine Excel-datei öffnen und bestimmte Spalten löschen. z.B in Tabelle1 Spalte A oder B usw.
Also öffnen und Tabellblatt wählen klappt soweit aber dann die Spalten einzeln zu löschen klappt nicht.
Meistens bekomme ich bei meinem Script diesen Fehler.
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\TEST\TEST.ps1:44 Zeichen:1
Ich gehe davon mal aus, dass ich die Methode falsch aufrufe......
ich suche nach einer Lösung für mein wahrscheinlich einfaches Problem.
ich möchte mit Powershell eine Excel-datei öffnen und bestimmte Spalten löschen. z.B in Tabelle1 Spalte A oder B usw.
Also öffnen und Tabellblatt wählen klappt soweit aber dann die Spalten einzeln zu löschen klappt nicht.
Meistens bekomme ich bei meinem Script diesen Fehler.
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\TEST\TEST.ps1:44 Zeichen:1
$sheet.Cells.Item(1).Entirecolumns.Delete("A")
Ich gehe davon mal aus, dass ich die Methode falsch aufrufe......
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5693379786
Url: https://administrator.de/contentid/5693379786
Ausgedruckt am: 24.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
$sheet.Cells.Item(1).Entirecolumns.Delete("A")
Falscher Aufruf, die Delete Methode hat keine Parameter für eine Zellenangabe und übrigens auch Tippfehler ... RTFM > https://learn.microsoft.com/en-us/office/vba/api/excel.range.delete$sheet.Range("A1").EntireColumn.Delete()
$sheet.Columns("A").Delete()
Gruß wurstel
#delete columns
$sheet.Range("A").EntireColumn.Delete()
Kein Wunder wenn mans falsch übernimmt ... 🙈 Einen Range "A" gibt es nicht, entweder irgendeine einzelne Zelle aus der Spalte z.B. A1 (ist egal welch) oder gleich "A:A", dann braucht's dann aber kein Entirecolumn mehr weil A:A bereits die ganze Spalte ist ... Ein nachgeschalteten EntireColumn braucht man nur wenn der Bezug vorher nicht die ganze Spalte beinhaltet.$sheet.Range("A").EntireColumn.Delete()
Beide Codes oben funktionieren einwandfrei (getestet) wenn man sie denn richtig benutzt!
Bitte Posts und das Manual auch ab und zu mal genau lesen, dann klappt's auch mit dem Nachbarn. Danke!
$wb.SaveAs($Target3)
Falsche Variable verwendet! $wb gibt es bei dir nicht, also wird auch nichts gespeichert! Die Variable ist ist bei dir $DOben steht alles was du brauchst und das funktioniert 100% !!
So viel zum Thema Aufmerksamkeit und Copy n Paste Syndrom 😤
$E = New-Object -ComObject Excel.Application
$E.DisplayAlerts = $False
$source = 'C:\Test\source.xlsx'
$target = 'c:\Test\destination.xlsx'
$D = $E.Workbooks.open($source)
$sheet = $E.Worksheets.Item(1)
$sheet.Columns("A").Delete()
$D.SaveAs($Target)
$D.Close($false)
$E.DisplayAlerts = $true
$E.quit()
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($E)
Ciao. Ich bin raus.
P.s. Freitag war übrigens gestern
Wurstel.