Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Close excel application using Powershell

I am initiating a macro in a workbook from powershell (to automate a process). The below in powershell opens the excel workbook and runs the macro without visualizing the process.

The issue is even though I do not see the macro running, the new instance of excel generated from the macro is still open.

# start Excel
$excel = New-Object -comobject Excel.Application

#open file
$FilePath = 'C:\file\Book1.xlsm'
$workbook = $excel.Workbooks.Open($FilePath)


#access the Application object and run a macro
$app = $excel.Application
$app.Run("macro")


#close excel
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Start-Sleep 1
'Excel processes: {0}' -f @(Get-Process excel -ea 0).Count
Remove-Variable $excel

exit $LASTEXITCODE

The excel file still comes up as a process in task manager and is taking up memory space.

How do I have powershell completely close the instance of the excel application that opens through the macro?

enter image description here

Any help greatly appreciated!

like image 604
Ariel Avatar asked Dec 19 '22 15:12

Ariel


1 Answers

Try using Quit method before you release COM object, like this:

$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Remove-Variable excel
like image 132
Kirill Pashkov Avatar answered Dec 29 '22 03:12

Kirill Pashkov