У нас много электронных таблиц, и необходимо обновить важный Addin.

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

Поэтому мы исследуем, как это сделать автоматически. Новое дополнение доступно только на новых ПК. Он не установлен на моей рабочей станции.

Скажем , старая формула oldf и новый Newf

Мой код будет делать что-то вроде этого:

ws.Cells.Item(cell_r, cell_c).Formula = "=newf(A1, B2, """CCC""")"

Затем я вызову workbook.saveAs() для сохранения в новой книге.

Теперь, когда я открываю новую книгу на новом ПК, я вижу, что ячейка становится «#NAME». Если я выберу ячейку, сделаю F2, а затем F9, она будет работать как положено. Но это побеждает всю цель автоматизации.

Моя теория такова: когда я устанавливаю ячейку в новую формулу на моем старом ПК, поскольку объект Excel COM не имеет представления о существовании нового надстройки, поэтому он помечает ячейку в каком-то недопустимом внутреннем состоянии. Он не будет обновляться, даже если он откроется в новом ПК.

Что можно сделать, чтобы это исправить?

2 ответа2

1

Независимо от того, что, поскольку вы изменяете рабочие книги на компьютере, на котором нет новой функции, все рабочие книги должны быть пересчитаны, когда они будут на компьютере с новой функцией, чтобы они фактически использовали новую функцию. Может потребоваться перепроверить, что при открытии новых книг на новых компьютерах в Excel Calculation установлен автоматический режим.

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

Public Function NewF(r As Range, r2 As Range, s As String) As Boolean
   NewF = OldF(r, s)
End Function
0

Самое простое решение - открыть новую рабочую книгу и нажать CTRL-ALT-F9, чтобы вызвать глобальный пересмотр всего этого. Думаю, тебе стоит сделать это только один раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .