Powershell: Excel-Mappe öffnen hebt Druckbereiche auf
Moin zusammen.
Wenn ich eine Excel-Abeitsmappe (xlsx) in Powershell wie folgt öffne, werden auf sämtlichen Tabellenblättern die festgelegten Druckbereiche entfernt:
Getestet mit Excel Versionen 365 & 2019, bzw. Powershell Versionen 5.1 & 7.3.2.
Hat jemand eine Idee, woran das liegt?
Im Netz finde ich dazu nichts. Das Problem besteht natürlich nicht, wenn ich zuerst die Mappe in Excel öffne und dann in Powershell das Aktive Objekt übernehme.
Gruß Thomas
Wenn ich eine Excel-Abeitsmappe (xlsx) in Powershell wie folgt öffne, werden auf sämtlichen Tabellenblättern die festgelegten Druckbereiche entfernt:
$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open(<Dateipfad>)
Hat jemand eine Idee, woran das liegt?
Im Netz finde ich dazu nichts. Das Problem besteht natürlich nicht, wenn ich zuerst die Mappe in Excel öffne und dann in Powershell das Aktive Objekt übernehme.
Gruß Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6237127489
Url: https://administrator.de/contentid/6237127489
Ausgedruckt am: 03.12.2024 um 18:12 Uhr
4 Kommentare
Neuester Kommentar
Servus Thomas,
das liegt an einem sehr alten Bug in Excel der schon seit Excel 2007 besteht. Beim Öffnen der Arbeitsmappe über ein OLE/COM-Objekt benennt Excel den Namensbezug des Druckbereichs in die englische Bezeichnung um. Das kannst du sehen indem du mal STRG+F3 in Excel drückst. Du solltest dort dann einen Bezug mit dem Namen Print_Area vorfinden. Wenn du diesen nun in Druckbereich umbenennst (für ein deutsches Excel) wird der Druckbereich wiederhergestellt.
Die Bezüge könntest bspw. in deinem Skript umbenennen um den Druckbereich dort wiederherzustellen
Ob es inzwischen eine andere Variante dafür gibt, kann ich gerade nicht evaluieren, aber das sollte dir als Ansatz sicher weiterhelfen.
Grüße Uwe
das liegt an einem sehr alten Bug in Excel der schon seit Excel 2007 besteht. Beim Öffnen der Arbeitsmappe über ein OLE/COM-Objekt benennt Excel den Namensbezug des Druckbereichs in die englische Bezeichnung um. Das kannst du sehen indem du mal STRG+F3 in Excel drückst. Du solltest dort dann einen Bezug mit dem Namen Print_Area vorfinden. Wenn du diesen nun in Druckbereich umbenennst (für ein deutsches Excel) wird der Druckbereich wiederhergestellt.
Die Bezüge könntest bspw. in deinem Skript umbenennen um den Druckbereich dort wiederherzustellen
$excel = New-Object -Com Excel.Application -P @{Visible=$true}
$wb = $excel.Workbooks.Open('C:\Pfad\test.xlsx')
$wb.Sheets | ?{try{$_.Names['Print_Area']}catch{}} | %{
$_.Names['Print_Area'].Name = "Druckbereich"
}
$excel.ActiveWindow.View = 2
Grüße Uwe