Programaticamente atualizou a fórmula de uma célula em um PC mostra #Name em outro PC

0

Temos muitas planilhas e precisamos atualizar um addin importante.

A mudança envolverá a conversão de uma fórmula antiga para uma nova. Não é uma mudança direta porque o nome e o número de parâmetros não são os mesmos.

Portanto, estamos investigando como fazer isso automaticamente. O novo addin está disponível apenas em novos computadores. Não está instalado na minha estação de trabalho.

Digamos que a fórmula antiga seja oldf e a nova newf

Meu código fará algo assim:

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

Em seguida, chamarei workbook.saveAs() para salvar em uma nova pasta de trabalho

Agora, quando eu abro a nova pasta de trabalho no novo PC, vejo que a célula se torna '#NAME'. Se eu selecionar a célula, faça um F2 e, em seguida, F9, funcionará como esperado. Mas derrota todo o propósito da automação.

Minha teoria é: quando eu coloco a célula em uma nova fórmula no meu PC antigo, já que o objeto excel COM não tem idéia da existência do novo addin, então ele marca a célula em algum estado interno inválido. Não será atualizada mesmo que seja aberta no novo PC.

O que pode ser feito para corrigir isso?

    
por Anthony Kong 16.03.2012 / 02:24

2 respostas

1

Não importa o que, como você está modificando as pastas de trabalho em um computador que não tem a nova função, todas as pastas de trabalho precisarão ser recalculadas quando estiverem . um pc com a nova função para que eles realmente usem a nova função. Talvez seja necessário verificar novamente que, quando você abrir as novas pastas de trabalho nos novos PCs, o Cálculo do Excel estiver definido como automático.

Se você não quiser que as planilhas se queixem do nome inválido, você poderá criar uma nova função fictícia no suplemento do seu computador.

Public Function NewF(r As Range, r2 As Range, s As String) As Boolean
   NewF = OldF(r, s)
End Function
    
por 17.03.2012 / 00:52
0

A solução mais simples é abrir a nova pasta de trabalho e pressionar CTRL-ALT-F9 para forçar um recálculo global sobre a coisa toda. Você só deveria fazer isso uma vez, eu acho.

    
por 16.03.2012 / 14:13