Программно обновленная формула ячейки на одном ПК показывает # Имя на другом ПК

У нас много электронных таблиц, и необходимо обновить важный 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, чтобы вызвать глобальный пересмотр всего этого. Думаю, тебе стоит сделать это только один раз.

Другие вопросы по тегам