2017-02-27 13 views
1

現在、1つのデータ接続を持つExcelファイルを更新するPSスクリプトがあり、完全に動作します。問題は、3つのデータ接続を持つ他のExcelファイルを作成したことです。 3つのデータ接続文字列を持つファイルに対して以下のコードを使用しようとすると、データは処理されますが、データ接続の1つだけが更新されます。すべてのデータ接続を更新するために必要なことを誰かに教えてもらえますか?私は、コードの "すべてをリフレッシュする"/"保存する"部分を繰り返そうとしましたが、エラーメッセージが表示されました。どんな助けもありがとう。ExcelでPowerShellを使用して複数の接続文字列を更新する

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

答えて

0

あなたの接続に応じて、1つの方法は(未テスト)あなたを助けるかもしれない

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

現在テストすることはできません、私は最後に別のリソース重いプロセスを待っているよう。 –

+0

申し訳ありません...参考までに、別のMS Accessデータベースに接続しています。 –

+0

その最初の方法は私のために働いた!ご助力ありがとうございます!申し訳ありませんでした前に、会議に出席し、応答しませんでした。 –

関連する問題