RefreshAll () Не соответствует - PullRequest
0 голосов
/ 08 мая 2019

Используя 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

Мне кажется, что у меня много кода, который ямне здесь не нужно, поскольку я пытаюсь найти то, что работает.

Edit-

Это помогло мне найти первоначальное решение.Я просто хочу понять, почему это работает только для некоторых файлов. Сценарий Powershell - Открыть Excel, Обновить внешние данные, Сохранить как

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...