Excel 2016 - signierte Makro mit PowerShell ausführen
Hi,
ich habe hier ein Excel Workbook mit Makros (XLSM). Das VBA-Orojekt ist mit einem Zertifikat aus unserer internen CA signiert. Soweit alles gut.
Wenn ich dieses XLSM kopiere und die Kopie dann mit Excel öffne, dann ist auch noch alles gut. Ich kann die Kopie öffnen und das VBA-Projekt ist korrekt signiert. Ich kann Daten ändern, die Kopie speichern, und beim nächsten Öffnen dieser Kopie mit Excel ist das VBA-Projekt immer noch korrekt signiert.
Öffne ich die Kopie (z.B. mit u.g. Code) jedoch in PowerShell und will von dort aus ein Makro starten, dann kommt die Fehlermeldung, dass das Dokument entweder keine Mahros enthalten würde oder die Ausführung von Makros deaktiviert wäre.
Öffne ich hingegen das Original mit PowerShell und führe das Makro aus, dann kommt keine Fehlermeldung und das Makro wird korrekt ausgeführt.
Was mache ich falsch?
Mein Code zum Öffnen der XLSM und Ausführen des Makros in PowerShell sieht so aus:
Ähnliches Verhalten, wenn ich statt das Makro auszuführen direkt Werte in den Zellen ändere. Das liefert zwar keine Fehler im PowerShell, die Änderungen werden ausgeführt. Aber wenn ich das Dokument anschließend in Excel öffne, dann sind die Makros deaktiviert. Und wenn man nachschaut, warum das so ist, dann meldet es, dass die Signierung nicht zum Dokument passen würde.
Mir ist klar, dass ich die kompletten Makros auch in PowerShell konvertieren und dann dort ausführen könnte, nur ist das keine Lösung für mein Problem, weil da auch Makros bei sind, welche in der Excel-GUI laufen müssen (Interaktion).
E.
ich habe hier ein Excel Workbook mit Makros (XLSM). Das VBA-Orojekt ist mit einem Zertifikat aus unserer internen CA signiert. Soweit alles gut.
Wenn ich dieses XLSM kopiere und die Kopie dann mit Excel öffne, dann ist auch noch alles gut. Ich kann die Kopie öffnen und das VBA-Projekt ist korrekt signiert. Ich kann Daten ändern, die Kopie speichern, und beim nächsten Öffnen dieser Kopie mit Excel ist das VBA-Projekt immer noch korrekt signiert.
Öffne ich die Kopie (z.B. mit u.g. Code) jedoch in PowerShell und will von dort aus ein Makro starten, dann kommt die Fehlermeldung, dass das Dokument entweder keine Mahros enthalten würde oder die Ausführung von Makros deaktiviert wäre.
Öffne ich hingegen das Original mit PowerShell und führe das Makro aus, dann kommt keine Fehlermeldung und das Makro wird korrekt ausgeführt.
Was mache ich falsch?
Mein Code zum Öffnen der XLSM und Ausführen des Makros in PowerShell sieht so aus:
$ExcelDocNameXLM = "Kopie"
$ExcelPathXLM = "D:\Daten\{0}.xlsm" -f $ExcelDocNameXLM
$ExcelApp = New-Object -ComObject Excel.Application
$ExcelBook = $ExcelApp.Workbooks.Open($ExcelPathXLM)
$MakroName = "{0}!MainMakro" -f $ExcelDocNameXLM
$ExcelApp.Run($MakroName)
$ExcelBook.Save()
$ExcelBook.Close()
$ExcelApp.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($ExcelApp) | Out-Null
Ähnliches Verhalten, wenn ich statt das Makro auszuführen direkt Werte in den Zellen ändere. Das liefert zwar keine Fehler im PowerShell, die Änderungen werden ausgeführt. Aber wenn ich das Dokument anschließend in Excel öffne, dann sind die Makros deaktiviert. Und wenn man nachschaut, warum das so ist, dann meldet es, dass die Signierung nicht zum Dokument passen würde.
Mir ist klar, dass ich die kompletten Makros auch in PowerShell konvertieren und dann dort ausführen könnte, nur ist das keine Lösung für mein Problem, weil da auch Makros bei sind, welche in der Excel-GUI laufen müssen (Interaktion).
E.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81785064397
Url: https://administrator.de/contentid/81785064397
Ausgedruckt am: 18.12.2024 um 18:12 Uhr
1 Kommentar