Excel non aggiorna i valori delle formule dopo aver riempito le celle di origine con valori


2

Faccio 3 passaggi:

  1. Sulla base di un modello, creo un nuovo file Excel tramite il codice (funziona benissimo):

    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)
    

Il modello ha due fogli:

"Circuito1 $", che riempirò di valori

"Formula $", dove ho una formula che riassume i valori in "Circuito1 $"

  1. Mi riempio il nuovo file di Excel tramite il codice come segue:

        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. Io verifico nel recente aggiornamento file Excel i valori nella "Formula $" foglio, ma non appaiono aggiornati. Ma se vado alla cella B1, faccio F2 e quindi premo Invio, il risultato della formula viene aggiornato con i giusti valori. Quello che mi aspetto come il comportamento giusto è che il risultato della formula venga mostrato aggiornato automaticamente, senza dover premere F2 e quindi Invio.

NOTA: l'aggiornamento automatico è abilitato nelle cartelle di lavoro, nel modello e nei file generati.

Non riesco a capire perché stia accadendo, perché se riempi i valori manualmente, usando la mia tastiera (invece del codice), funziona bene.

Cosa sta causando questo comportamento?

NOTA: il file modello può essere scaricato qui https://www.dropbox.com/s/duii11fyfh7u2kw/libro.xlsx?dl=0


Hai provato a forzare il calcolo application.calculate?
— Máté Juhász,

No, perché non sto usando l'oggetto applicazione per manipolare il file Excel.
— Fernando Moyano,

Cosa intendi con non usare l'applicazione, cosa usi? Scrivi nel file senza aprire Excel?
— Máté Juhász,

Nel punto n. 2 spiego il modo in cui popolare i valori in Excel, lo faccio tramite OleDbCommand
— Fernando Moyano,

Scusa, ancora non capisco. In quale applicazione hai il codice? Apri il file con la macro o semplicemente lo popoli?
— Máté Juhász,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.