使用PowerShell

时间:2017-02-27 19:39:35

标签: excel powershell powershell-v5.0

我目前有一个PS脚本可刷新具有1个数据连接的Excel文件,并且运行正常。问题是我已经构建了具有3个数据连接的其他Excel文件。当我尝试将以下代码用于具有3个数据连接字符串的文件时,将处理数据,但只会更新其中一个数据连接。任何人都可以告诉我需要做些什么来更新所有数据连接?我尝试重复"刷新所有" /"保存"部分代码,但这给了我错误消息。任何帮助将不胜感激。

$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()

1 个答案:

答案 0 :(得分:0)

根据您的连接,这些方法可能会帮助您(未经测试)

$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()