【问题标题】:Automatically refresh Excel ODC connections and pivots without opening the file PowerShell无需打开文件 PowerShell 即可自动刷新 Excel ODC 连接和数据透视
【发布时间】:2014-11-23 17:37:54
【问题描述】:

我有几个 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 上

【问题讨论】:

  • 不知道您拥有的 Office 版本,但可能BackroundRefresh 已关闭该连接。看看here 如何设置它。 .RefreshAll 方法仅在“BackgroundQuery 属性设置为 True”时刷新,根据 MSDN
  • 嗨,马特,每次用户打开文件时,后台刷新仍然会刷新,并且必须等待 20 多分钟才能获取新数据。我在 Win7 上使用 Excel 2010。使用此信息更新了原始问题,感谢您的指出。
  • 我会使用 Windows 任务计划程序设置一个 cron 作业,每周一早上运行一个 .bat 文件。在 .bat 文件中,我将传入一个参数标识符,说“嘿,我正在从 cron 作业运行”,然后在 ThisWorkbook Workbooks.Open 函数中,我将检查参数并运行所需的刷新并关闭excel书是必要的。以下链接(来自回程机器)讨论了使用 CLI 打开 Excel 并传入参数 mrexcel.com/archive/VBA/15657.html

标签: sql excel vba powershell


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这个答案应该被扩展,因为不清楚你如何回答 OP 的要求,即在不打开文件的情况下刷新数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多