Powershell und Excel: Tabellenblatt auswählen
Hallo alle zusammen,
ich habe mir ein Powershell-Skript erstellt, welches mir einen Bereich aus einer Exceltabelle in eine CSV-Datei schreiben soll.
Mein Problem ist, dass die Daten aus dem falschen Tabellenblatt gezogen werden. Wird nicht mit $WB.Sheets("Woche") das Tabellenblatt Woche ausgewählt?
Gibt es auch eine Möglichkeit die Betriebsmeldungen wegzukommen? Zu:
Vielen Dank für eure Hilfe.
Gruß Ralf
ich habe mir ein Powershell-Skript erstellt, welches mir einen Bereich aus einer Exceltabelle in eine CSV-Datei schreiben soll.
Mein Problem ist, dass die Daten aus dem falschen Tabellenblatt gezogen werden. Wird nicht mit $WB.Sheets("Woche") das Tabellenblatt Woche ausgewählt?
$excel = New-Object -ComObject Excel.Application
$WB = $excel.Workbooks.Open('C:\Test\Datei.xlsx') #Quelldatei
$WS = $WB.Sheets("Woche") #Tabellenblatt
$data = $WS.Range("A1", "E10") #zu kopierender Bereich
$XLcsv = 6
$data.worksheet.SaveAs('C:\Test\Export.csv', $XLcsv) #Zieldatei
$excel.Quit()
Gibt es auch eine Möglichkeit die Betriebsmeldungen wegzukommen? Zu:
- Datei existiert schon und soll ersetzt werden
- Änderung an CSV-Datei speichern
- Einige Features in der ... Möchten Sie das Format trotzdem verwenden?
Vielen Dank für eure Hilfe.
Gruß Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3209217798
Url: https://administrator.de/forum/powershell-und-excel-tabellenblatt-auswaehlen-3209217798.html
Ausgedruckt am: 05.02.2025 um 14:02 Uhr
6 Kommentare
Neuester Kommentar
Servus,
versuche es mal mit
siehe z.B.: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet
versuche es mal mit
$ws = $wb.Worksheets.item("Woche")
siehe z.B.: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet
Moin Ralf,
Doch genau.
Mach Excel doch mal sichtbar und überprüfe die Schritte in der Konsole.
Gruß Thomas
PS: Das ComObjekte sollte nach Abschluss immer aufgehoben werden, sonst läuft Excel im Hintergrund weiter
Doch genau.
Mach Excel doch mal sichtbar und überprüfe die Schritte in der Konsole.
$excel.visible = $true
Gibt es auch eine Möglichkeit die Betriebsmeldungen wegzukommen?
sicher:$excel.DisplayAlerts = $false
Gruß Thomas
PS: Das ComObjekte sollte nach Abschluss immer aufgehoben werden, sonst läuft Excel im Hintergrund weiter
$excel,$wb,$ws,$data | %{[System.Runtime.InteropServices.Marshal]::ReleaseComObject($_)}
Zitat von @Ralf82:
Als Trennzeichen werden in der Datei jetzt allerdings Komma anstatt von Semikolons verwendet.
Als Trennzeichen werden in der Datei jetzt allerdings Komma anstatt von Semikolons verwendet.
CSV = Comma Separated Values
Du könntest es mit
Import-CSV C:\Test\Export.csv | Export-CSV C:\Test\Export_semicolon.csv -NoTypeInformation -Delimiter ";"
Edit: andere Option entfernt
Als Trennzeichen werden in der Datei jetzt allerdings Komma anstatt von Semikolons verwendet.
Oder die local Option in der SaveAs Methode auf $true setzen, dann wird der Trenner der aktuellen Locale verwendet.$n = [System.Reflection.Missing]::Value
# create excel object
$excel = New-Object -ComObject Excel.Application -P @{
Visible = $true # visible for test
DisplayAlerts = $false # disable alerts
}
# open wb
$WB = $excel.Workbooks.Open('C:\Test\Datei.xlsx')
# create temporary wb for custom range export
$wbtemp = $excel.Workbooks.Add()
# copy range to temp wb
[void]$WB.Sheets["Woche"].Range('A1:E10').Copy($wbtemp.Sheets(1).Range("A1"))
# save sheet
$wbtemp.Sheets.Item(1).SaveAs('C:\Test\Export.xlsx',6,$n,$n,$n,$n,$n,$n,$n,$true)
# close wb's
$wbtemp.Close($false)
$WB.Close($false)
# reenable alerts, because setting ist permanent
$excel.DisplayAlerts = $true
# quit and release resources
$excel.Quit()
$wb,$wbtemp,$excel | %{[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($_)}