Как Excel узнает, что файл «не был пересчитан до его последнего сохранения». Могу ли я обмануть Excel, заставив думать об обратном?

#excel #ubuntu #windows-subsystem-for-linux

#excel #ubuntu #windows-subsystem-for-linux

Вопрос:

При связывании рабочих книг в Excel я часто получаю ошибку типа:

Ссылки на xxxx.xlsx не были обновлены, потому xxxx.xlsx что не были пересчитаны до его последнего сохранения

Эта ошибка появляется один раз для каждого связанного значения, что означает в моем случае около 100 предупреждений, для которых мне нужно нажать OK. Загадочно, что это предупреждение приходит, даже если xxxx.xlsx не содержит формул и, следовательно, вообще не пересчитывается: оно полностью заполнено только значениями.

Итак, как Excel узнает, что файл не был пересчитан перед сохранением? Просматривает ли он определенное значение xml внутри ZIP-файла (xlsx), которое я мог бы изменить? Он смотрит на дату открытия и дату изменения, которую я мог бы обойти с touch помощью команды Linux? Мне бы хотелось найти решение с использованием командной строки ubuntu, если это возможно (я запускаю Windows WSL), чтобы я мог использовать скрипт.

И более того, xxxx.xlsx он действительно большой, который по сети (благодаря COVID) дома медленно открывается / пересчитывается / сохраняется. Поэтому я действительно не хочу когда-либо открывать этот файл в Excel.

Есть идеи?

Комментарии:

1. существует свойство, которое может попытаться вычислить рабочую книгу перед сохранением. learn.microsoft.com/en-us/office/vba/api/… Но не уверен, что это ваш случай

2. Это свойство указывает Excel (если открыто), что делать в будущем. Но он не скажет мне, что было сделано с файлом в прошлом.

3. Я имею в виду, что Excel будет пересчитывать при закрытии, даже если пересчет не требуется, из-за этого свойства

Ответ №1:

Вы можете попробовать добавить этот макрос в свой ЛИЧНЫЙ файл.XLSB, а затем запустить его. Он попросит вас выбрать файл, а затем открыть его, не разрешая ссылки для обновления.

 Sub OpenWithoutUpdatingLinks()

    Dim strFileName As String

    strFileName = Application.GetOpenFilename
    If strFileName <> "" Then Workbooks.Open FileName:=strFileName, UpdateLinks:=False

End Sub
  

Это позволит вам открыть файл, над которым вы работаете, не получая сообщения об обновлении ссылок.

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

Дайте нам знать, если вам нужны инструкции по добавлению макроса в ваш личный файл и его запуску.

Комментарии:

1. К сожалению, мне нужно обновить ссылки на новый файл xlsx, который был сгенерирован скриптом, поэтому я не могу это использовать.