2016-07-21 11 views
1

Ich initiiere ein Makro in einer Arbeitsmappe von Powershell (um einen Prozess zu automatisieren). Die folgende Beschreibung in Powershell öffnet die Excel-Arbeitsmappe und führt das Makro aus, ohne den Prozess zu visualisieren.Schließen Excel-Anwendung mit Powershell

Das Problem ist, obwohl ich nicht sehe, dass das Makro ausgeführt wird, die neue Instanz von Excel, die aus dem Makro generiert wird, ist noch offen.

Die Excel-Datei kommt immer noch als Prozess im Task-Manager auf und belegt Speicherplatz.

Wie schließe ich Powershell vollständig die Instanz der Excel-Anwendung, die durch das Makro öffnet?

enter image description here

Jede Hilfe sehr zu schätzen!

+0

Sie sollten wahrscheinlich book.close/app.quit anrufen –

Antwort

2

Versuchen schließen Quit-Methode verwenden, bevor Sie COM-Objekt freigeben, wie folgt aus:

$excel.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) 
Remove-Variable excel 
+0

Großartig funktioniert das, Die Makro-Powershell-Befehle, die von Book1 ausgeführt werden sollen, öffnen jedoch eine zweite Arbeitsmappe, die standardmäßig "Book2" verwendet. Das Problem, das ich immer noch habe, ist, wenn ich das Skript ausführe Book2 fordert den Benutzer auf, die Arbeitsmappe zu speichern, bevor Sie fortfahren. Wie schließe ich auch die zweite Arbeitsmappe (so die neue aktive Arbeitsmappe)? – Ariel

+0

Ich habe gelöst, indem ich die zweite Arbeitsmappe innerhalb des Makros geschlossen habe, danke für Ihre Hilfe! – Ariel

1

Sie können dies auf Ihre PS-Code hinzufügen:

kill -processname excel 

Dadurch werden alle geöffneten Instanzen von Excel