Программно обновленная формула ячейки на одном ПК показывает # Имя на другом ПК
У нас много электронных таблиц, и необходимо обновить важный Addin.
Изменение будет включать преобразование старой формулы в новую. Это не прямое изменение, потому что имя и количество параметров не совпадают.
Поэтому мы исследуем, как это сделать автоматически. Новое дополнение доступно только на новых ПК. Он не установлен на моей рабочей станции.
Скажем, старая формула старая и новая новая
Мой код будет делать что-то вроде этого:
ws.Cells.Item(cell_r, cell_c).Formula = "=newf(A1, B2, """CCC""")"
Тогда я позвоню workbook.saveAs()
сохранить в новой книге
Теперь, когда я открываю новую книгу на новом ПК, я вижу, что ячейка становится "#NAME". Если я выберу ячейку, сделаю F2, а затем F9, она будет работать как положено. Но это побеждает всю цель автоматизации.
Моя теория такова: когда я устанавливаю ячейку в новую формулу на моем старом ПК, поскольку объект Excel COM не имеет представления о существовании нового надстройки, поэтому он помечает ячейку в каком-то недопустимом внутреннем состоянии. Он не будет обновляться, даже если он откроется в новом ПК.
Что можно сделать, чтобы это исправить?
2 ответа
Независимо от того, что, поскольку вы изменяете рабочие книги на компьютере, на котором нет новой функции, все рабочие книги должны быть пересчитаны, когда они будут на компьютере с новой функцией, чтобы они фактически использовали новую функцию. Возможно, вам придется перепроверить, что при открытии новых книг на новых компьютерах в Excel Calculation установлен автоматический режим.
Если вы не хотите, чтобы рабочие листы жаловались на неверное имя, вы можете создать новую фиктивную функцию в надстройке на своем компьютере.
Public Function NewF(r As Range, r2 As Range, s As String) As Boolean
NewF = OldF(r, s)
End Function
Самое простое решение - открыть новую рабочую книгу и нажать CTRL-ALT-F9, чтобы вызвать глобальный пересмотр всего этого. Думаю, тебе стоит сделать это только один раз.