无需打开文件PowerShell即可自动刷新Excel ODC连接和枢轴

时间:2014-09-29 10:43:25

标签: sql excel vba powershell

我有几个20多MB的Excel文件,需要在开始营业前(周一上午8点)每周更新一次。
这些文件包含一个数据表,数据来自SQL Server视图,通过外部连接(ODC文件) 它们还有一个透视表,在刷新数据表后也需要刷新。

我试图找到一个解决方案(Windows PowerShell)来自动刷新数据和数据透视表,而无需触摸文件。 "在开幕时刷新"和其他Excel选项不可行,因为刷新所有连接最多需要20分钟。

我也不想刷新所有工作表,因为该文件具有图表的自定义着色和"刷新"将其重置为Excel默认值,这是不可能发生的。

我试过这个,但它似乎不适用于ODC连接?至少,它没有做任何事情。

Windows PowerShell

$ExcelApp = new-object -ComObject Excel.Application
$ExcelApp.Visible = $false
$ExcelApp.DisplayAlerts = $false

$Workbook = $ExcelApp.Workbooks.Open("c:\test\ref_test.xlsx", 3, $false, 5, $null, $null, $true)
Start-Sleep -s 30
$Workbook.RefreshAll()
$Workbook|Get-Member *Save*
$Workbook.Save()

$ExcelApp.Quit()

有什么想法吗?

Office版:2010,在Windows 7上

2 个答案:

答案 0 :(得分:2)

this question上的答案可能会有所帮助。 perl脚本也可用作预编译的exe文件。

答案 1 :(得分:-1)

我会使用Excel VBA解决此问题,并将您的Excel文件创建为.xlsm。

然后使用Excel VBA命令和函数更新文件以刷新odbc连接,然后另存为新文件以进行分发。

http://www.vbforums.com/showthread.php?675977-Auto-Open-Refresh-Pivots-Save-Close-Excel-files-using-VB