在一台电脑上以编程方式更新单元格公式,在另一台电脑上显示#Name

在一台电脑上以编程方式更新单元格公式,在另一台电脑上显示#Name

我们有很多电子表格,需要升级一个重要的插件。

此次变更将涉及将旧公式转换为新公式。由于名称和参数数量均不相同,因此变更并非一帆风顺。

因此,我们正在研究如何自动完成此操作。新插件仅在新电脑上可用。我的工作站上没有安装它。

假设旧公式是旧页和新的

我的代码将会做这样的事情:

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

然后我将调用workbook.saveAs()保存到一个新的工作簿

现在,当我在新电脑上打开新工作簿时,我可以看到单元格变为“#NAME”。如果我选​​择单元格,按 F2 然后按 F9,它将按预期工作。但这违背了自动化的整个目的。

我的理论是:当我在旧电脑中将单元格设置为新公式时,由于 excel COM 对象不知道新插件的存在,因此它会将单元格标记为某种无效的内部状态。即使在新电脑中打开它也不会刷新。

怎样才能修复它?

答案1

无论如何,由于您正在修改工作簿的电脑上不是有了新功能,工作簿一旦在具有新功能的电脑上,以便他们真正使用新功能。您可能需要仔细检查,当您在新电脑上打开新工作簿时,Excel 计算是否设置为自动。

如果您不希望工作表抱怨名称无效,您可以在计算机上的插件中创建一个虚拟的新函数。

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

答案2

最简单的解决方案是打开新的工作簿并按CTRL-ALT-F9强制对整个事情进行全局重新计算。我认为你只需要做一次。

相关内容