【问题标题】:Refresh Excel connections using Powershell使用 Powershell 刷新 Excel 连接
【发布时间】:2021-07-07 19:47:44
【问题描述】:

我有以下代码可以打开电子表格,删除所有连接并“保存”一个新文件。

$a = New-Object -COM "Excel.Application"
$a.Visible = $false
$b = $a.Workbooks.Open("F:\Scripts\All Users.xlsx")

do
{
    $b.Connections.Item(1).Delete()
    $Count = $b.Connections.Count()
} until($Count -eq 0)

$b.SaveAs("F:\Scripts\Users Home Drive Search.xlsx")
$b.Close()

我想知道两件事:

  1. 如何让工作表刷新所有连接?我试过“$b.Connections.refreshall()”,但 refreshall() 不存在。
  2. 如何退出 Excel 应用程序?我运行了“New-Object -COM "Excel.Application" | Get-Member -MemberType Methods”,但没有看到退出或退出方法。

【问题讨论】:

    标签: excel powershell


    【解决方案1】:

    RefreshAll()WorkBook object的一个方法,所以用它来刷新外部连接:

    $b.RefreshAll()
    

    要退出 Excel 并从内存中删除使用的 COM 对象,请使用

    $a.Quit()
    $null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($b)
    $null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($a)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
    

    顺便说一句,我会使用更具描述性的变量名称,所以 $excel 代替 $a$workbook 代替 $b 以避免以后混淆。

    【讨论】:

      猜你喜欢
      • 2019-05-31
      • 1970-01-01
      • 2015-10-30
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多