web-dev-qa-db-ja.com

ファイルを開かずにExcelファイルを更新するにはどうすればよいですか(データの更新と数式の更新)。

Excelファイルを開いて手動で操作しなくても、自動的に更新して保存したいExcelファイルがあります。手動で、ファイルを開いてデータの更新を押し、SQLクエリを実行してから、F9キーを押して数式を更新してから、閉じる/保存します。

(Perlスクリプトを使用してファイルをメールで送信するか、SAS JMPを使用していくつかの数値/チャートを実行し、メールで送信します。基本的に、XLSを必要とするスクリプトを実行する必要があります。更新するファイル)

4
Alex

私は結局 Win32 :: Excel :: Refresh を見つけました、そしてそれは法案に適合します。これはPerlmodですが、Perlを知らない、または扱いたくない場合に実行できるWindows実行可能ファイルも付属しています。

2
Alex

私の回避策は、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タスクによって、手動の介入なしで毎日更新されます。

4
ifZenElse

あなたは AutoIt でExcelファイルを操作することができます、 ここ はそうするためのライブラリです。 AutoItを使用してSQLクエリを自動化し、データをExcelファイルに渡すこともできます(使用するデータベースエンジンによって異なります)。 AutoItは電子メールも実行できます。

1
MaQleod