Excelファイルを開いて手動で操作しなくても、自動的に更新して保存したいExcelファイルがあります。手動で、ファイルを開いてデータの更新を押し、SQLクエリを実行してから、F9キーを押して数式を更新してから、閉じる/保存します。
(Perlスクリプトを使用してファイルをメールで送信するか、SAS JMPを使用していくつかの数値/チャートを実行し、メールで送信します。基本的に、XLSを必要とするスクリプトを実行する必要があります。更新するファイル)
私は結局 Win32 :: Excel :: Refresh を見つけました、そしてそれは法案に適合します。これはPerlmodですが、Perlを知らない、または扱いたくない場合に実行できるWindows実行可能ファイルも付属しています。
私の回避策は、Excelファイルにマクロを記録することです(したがって、.xlsmファイル拡張子を使用する必要があります)(最初に、[プログラム] >> [Windows Powershell]に移動し、[プロンプト]で入力する必要がありますSet-ExecutionPolicy RemoteSigned
スクリプトを実行できるようにするため):
Sub AutoUpdate()
'
' AutoUpdate Macro
' data refresh from MSQuery connection
'
Sheets("Feuill1").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
次に、Excelファイルを開き、マクロを呼び出し、ファイルを保存して閉じることで、トリックを実行するPowershellスクリプトを使用します。この例では、セキュリティ/バックアップの目的で元のファイルのコピーを作成しますが、もちろん元のファイル自体を保存することもできます。
$objectExcel = new-object -c Excel.application
$objectExcel.displayAlerts = $false # don't Prompt the user
#$objectExcel.visible = $True;
$Classeur = $objectExcel.workbooks.open("source_filepath", $null, $true)
$objectExcel.run("AutoUpdate")
# $objectExcel.run("RemoveODBC") # another custom macro for removing data connexion
$Classeur.saveas("destination_filepath")
$Classeur.close($false)
#$objectExcel.visible = $False;
$objectExcel.quit()
spps -n Excel
そのため、私のExcelレポートは、上記のスクリプトを呼び出したWindows Planifiedタスクによって、手動の介入なしで毎日更新されます。