14
votes

Using Powershell it's rather easy to call Excel macro's from a script, for example with a script like this:

$excel = new-object -comobject excel.application
$excelFiles = Get-ChildItem -Path C:\fso -Include *.xls, *.xlsm -Recurse
Foreach($file in $excelFiles)
{
   $workbook = $excel.workbooks.open($file.fullname)
   $worksheet = $workbook.worksheets.item(1)
   $excel.Run("CreateChart")
   $workbook.save()
   $workbook.close()
}
$excel.quit()

However, I didn't manage to call a macro with some arguments. Is this possible or is the best way to write a config file that the macro will read when called?

1

1 Answers

9
votes

You can run a macro with arguments like this:

$excel.Run('CreateChart', 'arg1', 'arg2', ...)