RefreshAll()不一致

时间:2019-05-08 13:44:27

标签: excel vba powershell

使用PowerShell,我要打开几个Excel工作簿,刷新其中的所有链接,然后计算工作表,以便其他用户打开它们时,他们可以看到更新的链接,而无需刷新链接。我的脚本有效,但不适用于所有工作表。

我发现将工作表设置为“手动计算”会阻止它在“保存并关闭”时进行计算,因此我添加了脚本以将“计算”更改为“自动”,然后又恢复为“手动”,但不适用于其中一张工作表。该工作表与其他工作表之间的唯一区别是,它位于不同的文件夹中,但是脚本可以访问该文件夹。

$Excel = new-object -comobject excel.application

$Excel.displayAlerts = $false # don't prompt the user
$Excel.visible = $False;

$wb = $Excel.workbooks.open("C:\Folder1\File1.xlsm") 

$xlAutomatic = -4105
$xlCalculationManual = -4135
$Excel.Calculation = $xlAutomatic

$wb.RefreshAll() #refresh links
$wb.close($true) #close and save

$wb = $Excel.workbooks.open("C:\Folder1\File2.xlsm")
$wb.RefreshAll() #refresh links
$wb.Calculate
$wb.close($true) #close and save

$wb = $Excel.workbooks.open("C:\Folder1\File3.xlsm")
$wb.RefreshAll() #refresh links
$wb.Calculate
$wb.close($true) #close and save

$wb = $Excel.workbooks.open("C:\Folder1\Folder2\File4.xlsm") # <-----File that is not updating
$wb.RefreshAll() #refresh links
$wb.Calculate
$wb.close($true) #close and save

$wb = $Excel.workbooks.open("C:\Folder1\File1.xlsm")
$wb.RefreshAll() #refresh links
$wb.Calculate

$Excel.Calculation = $xlCalculationManual

$wb.close($true) #close and save

$Excel.quit()

spps -n excel

当我试图找到可行的方法时,我觉得这里有很多我不需要的代码。

编辑-

这帮助我找到了最初的解决方案。我只想了解为什么它仅适用于某些文件。 Powershell Script - Open Excel, Update External Data, Save as

0 个答案:

没有答案