使用PowerShell更新Excel中的多个连接string

我目前有一个PS脚本,刷新有1个数据连接的Excel文件,它完美的作品。 问题是,我已经build立了其他有3个数据连接的Excel文件。 当我尝试使用下面的代码为3个数据连接string的文件时,数据被处理,但只有一个数据连接得到更新。 任何人都可以告诉我,我需要做什么来获取所有数据连接更新? 我试着重复“全部刷新”/“保存”部分代码,但那给了我错误信息。 任何帮助,将不胜感激。

$excel = new-object -comobject excel.application $excel.DisplayAlerts = $false $excelFiles = Get-ChildItem -Path "File Folder Location (ex. C:\Documents)" -Include *.xls, *.xlsm,*.xlsx, *.lnk -Recurse Foreach($file in $excelFiles) { $workbook = $excel.workbooks.open($file.fullname) $worksheet = $workbook.worksheets.item(1) $workBook.RefreshAll() $workbook.save() $workbook.close() } $excel.quit() 

根据你的连接,一个方法可能会帮助你(未经testing)

 $excel = new-object -comobject excel.application $excel.DisplayAlerts = $false $excelFiles = Get-ChildItem -Path "$($env:userprofile)\Documents)" -Include *.xls, *.xlsm,*.xlsx, *.lnk -Recurse Foreach($file in $excelFiles) { $workbook = $excel.workbooks.open($file.fullname) # ---- this method ---- foreach ($Conn in $workbook.Connections){ $Conn.OLEDBConnection.BackgroundQuery = $false $Conn.refresh() } # ---- and/or this method ---- foreach ($Sheet in $workbook.Worksheets) { foreach ($QTable in $Sheet.QueryTables) { $QTable.BackgroundQuery = $false } } # ----- might get you further, depneding on your connections ---- $workBook.RefreshAll() $workbook.save() $workbook.close() } $excel.quit()