Passwort geschützte Excel mit Powershell öffnen
Hallo Zusammen,
ich habe folgendes Problem:
Ich habe ein Script in Powershell erstellt, dass mir eine Passwort geschützte Excel öffnet und in dieser ein Makro ausführt.
Das Script funktioniert auf meinem Rechner (Windows 10, 1909, 10.0.18363.535) einwandfrei, auf dem Server (Windows Server 2012 R2 Standard, Version 6.3.6900), auf dem es eigentlich laufen soll, bekomme ich folgende Fehlermeldungen:
Hier mein Script:
PS Version Server:
PS Version Windows 10 -Rechner:
Hat jemand eine Idee, weshalb es auf meinem Rechner funktioniert, auf dem Server jedoch nicht?
Vielen Dank im Voraus!
ich habe folgendes Problem:
Ich habe ein Script in Powershell erstellt, dass mir eine Passwort geschützte Excel öffnet und in dieser ein Makro ausführt.
Das Script funktioniert auf meinem Rechner (Windows 10, 1909, 10.0.18363.535) einwandfrei, auf dem Server (Windows Server 2012 R2 Standard, Version 6.3.6900), auf dem es eigentlich laufen soll, bekomme ich folgende Fehlermeldungen:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\Admin\OpenExcelFile.ps1:4 Zeichen:1
+ $workbook = $excel.workbooks.open($file,3,0,5,$password,$password)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Ausnahme beim Festlegen von "visible": "Das COM-Objekt des Typs "Microsoft.Office.Interop.Excel.ApplicationClass" kann nicht in den Schnittstellentyp
"Microsoft.Office.Interop.Excel._Application" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente
für die Schnittstelle mit der IID "{000208D5-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Fehler beim Laden der
Typbibliothek/DLL. (Ausnahme von HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))."
In C:\Admin\OpenExcelFile.ps1:5 Zeichen:1
+ $excel.visible = $false
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) , SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
Ausnahme beim Aufrufen von "Run" mit 1 Argument(en): "Das COM-Objekt des Typs "Microsoft.Office.Interop.Excel.ApplicationClass" kann nicht in den Schnittstellentyp
"Microsoft.Office.Interop.Excel._Application" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente
für die Schnittstelle mit der IID "{000208D5-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Fehler beim Laden der
Typbibliothek/DLL. (Ausnahme von HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))."
In C:\Admin\OpenExcelFile.ps1:6 Zeichen:1
+ $excel.run("DailyRefresh")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) , MethodInvocationException
+ FullyQualifiedErrorId : InvalidCastException
Hier mein Script:
$excel = New-Object -ComObject Excel.Application
$file = '\\server\share\ExcelFile.xlsm'
$password = 'xxxxxxx'
$workbook = $excel.workbooks.open($file,3,0,5,$password,$password)
$excel.visible = $false
$excel.run("DailyRefresh")
PS Version Server:
Name Value
---- -----
PSVersion 5.1.14409.1018
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1018
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PS Version Windows 10 -Rechner:
Name Value
---- -----
PSVersion 5.1.18362.145
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.145
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Hat jemand eine Idee, weshalb es auf meinem Rechner funktioniert, auf dem Server jedoch nicht?
Vielen Dank im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 533551
Url: https://administrator.de/contentid/533551
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
19 Kommentare
Neuester Kommentar
Zitat von @Stefan91:
Visual Studio Code gibt mir für die Variable $workbook (Zeile 4) folgenden Hinweis aus: "The variable "workbook" is defined, but never used."
Das scheint jedoch auf meinem Rechner die Funktion nicht zu beeinflussen, ich kann das Script in VS Code und in der Powersehll ausführen.
Visual Studio Code gibt mir für die Variable $workbook (Zeile 4) folgenden Hinweis aus: "The variable "workbook" is defined, but never used."
Das scheint jedoch auf meinem Rechner die Funktion nicht zu beeinflussen, ich kann das Script in VS Code und in der Powersehll ausführen.
Das kann ich natürlich nicht beurteilen da ich dein Script nicht kenne (außer die paar Zeilen).
Zitat von @Stefan91:
Visual Studio Code gibt mir für die Variable $workbook (Zeile 4) folgenden Hinweis aus: "The variable "workbook" is defined, but never used."
Das scheint jedoch auf meinem Rechner die Funktion nicht zu beeinflussen, ich kann das Script in VS Code und in der Powersehll ausführen.
Das ist ja auch kein Fehler, sondern nur eine Feststellung.Visual Studio Code gibt mir für die Variable $workbook (Zeile 4) folgenden Hinweis aus: "The variable "workbook" is defined, but never used."
Das scheint jedoch auf meinem Rechner die Funktion nicht zu beeinflussen, ich kann das Script in VS Code und in der Powersehll ausführen.
A = 1
B = 2
C = 2*A
mich interssiert nur A und C
Warum habe ich also B im Script definiert?
Nichts weiter ist damit gemeint.
Du hast Office Überreste in der Registry
https://stackoverflow.com/questions/28066719/unable-to-cast-com-object-o ...
https://stackoverflow.com/questions/28066719/unable-to-cast-com-object-o ...
Dann Office clean entfernen und Neuinstallation.von Office durchführen. Oder nimm ProcMOn zur Hand.
Beachte auch die "Bitness" von Office und der Powershell Konsole!
Für Office Automation über die Aufgabenplanung muss zusätzlich beachtet werden das ein Ordner namens "Desktop" im Profil des Users existieren muss mit dem die Aufgabe ausgeführt wird, ist das Konto z.B. SYSTEM muss der im System-Profile im Windows Ordner erstellt werden.
Für Office Automation über die Aufgabenplanung muss zusätzlich beachtet werden das ein Ordner namens "Desktop" im Profil des Users existieren muss mit dem die Aufgabe ausgeführt wird, ist das Konto z.B. SYSTEM muss der im System-Profile im Windows Ordner erstellt werden.
OK. Bis Mittwoch!