O Excel não atualiza valores de fórmulas depois de preencher as células de origem com valores

1

Eu faço 3 etapas:

  1. Baseado em um modelo, eu crio um novo arquivo do Excel através do código (funciona bem):

    Shared Sub FillExcel()
    Dim extension As String = ".xlsx"
    Dim sourcePath As String = "c:\Temp\libro" & extension
    Dim targetPath As String = "c:\Temp\libro - " & DateTime.Now.Hour & DateTime.Now.Minute & extension
    
    'Generar archivo nuevo a partir del anterior
    FileIO.FileSystem.CopyFile(sourcePath, targetPath, True)
    

O modelo tem duas folhas:

"Circuito1 $", que preencherei com valores

"Formula $", onde tenho uma fórmula que resume os valores em "Circuito1 $"

  1. Eu preencho o novo arquivo do Excel através do código da seguinte forma:

        Dim strInsertIntoExcel As String = ""
    Dim cn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & targetPath & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=0'"
    
    strInsertIntoExcel = "INSERT INTO [Circuito1$] (Fecha,Hora,Valor) values(@date,@time,@values)"
    
    Using cnn As New System.Data.OleDb.OleDbConnection(cn)
        cnn.Open()
        Dim cant As Integer = 0
        Dim value As Decimal
        While cant < 10
    
            value = Convert.ToDecimal(cant * DateTime.Now.Second)
            Dim fecha As Object = DateTime.Now
            Using cmd As OleDbCommand = cnn.CreateCommand()
                cmd.Parameters.AddWithValue("@date", "fecha")
                cmd.Parameters.AddWithValue("@time", "daf1")
                cmd.Parameters.AddWithValue("@values", value)
                Console.WriteLine(value)
                cmd.CommandText = strInsertIntoExcel
                cmd.ExecuteNonQuery()
            End Using
            cant = cant + 1
    
        End While
    
    
    End Using
    
    1. Eu verifico no arquivo Excel atualizado recentemente os valores na planilha "Fórmula $", mas eles não aparecem atualizados. Mas se eu for para a célula B1, faço F2 e depois pressiono Enter, o resultado da fórmula é atualizado com os valores corretos. O que estou esperando como o comportamento correto é que o resultado da fórmula seja mostrado atualizado automaticamente, sem ter que pressionar F2 e depois Enter.

NOTA: A atualização automática está ativada nas pastas de trabalho, no modelo e nos arquivos gerados.

Não consigo descobrir por que isso está acontecendo porque, se preencher os valores manualmente, usando o teclado (em vez do código), ele funciona bem.

O que está causando esse comportamento?

NOTA: O arquivo de modelo pode ser baixado aqui link

    
por Fernando Moyano 05.06.2015 / 16:57

0 respostas