Это довольно простой скрипт, но он не всегда работает. Это сработало однажды сегодня, когда я впервые запустил его. Я считаю, что он не открывает файлы по пути, указанному мной при последующих запусках. Я не вижу ошибок в выводе журнала, поэтому я не уверен, куда идти дальше. Я видел темы на этом форуме о добавлении папки рабочего стола по этому пути, что я и сделал: C: \ Windows \ SysWOW64 \ config \ systemprofile. Я использую 64-битную версию Excel 2013.
Вот мой сценарий:
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.displayAlerts = $false
$path = "C:\Workbooks"
$workbook = Get-ChildItem -path $path -include *.xlsx, *.xls -recurse;
foreach ($file in $workbook) {
$workbook = $excel.Workbooks.Open($file.FullName)
$excel.ActiveWorkbook.RefreshAll()
$excel.ActiveWorkbook.save()
$excel.ActiveWorkbook.close()
}
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Remove-Variable excel
$error | out-file "C:\Scripts\log\RefreshLog.txt"
$excel.Visible
а также$excel.displayAlerts
к правде?$workbook
в набор файлов, затем измените его внутри foreach, чтобы получить рабочую книгу, возвращенную из$excel.Workbooks.Open
?